IIS 8.0 добавляет заголовок Expires и Cache-Control

Я вижу, что stackoverflow добавляет как Expires, так и Cache-Control для своих изображений, css, js и т. д., поэтому я пытаюсь сделать то же самое, я пробовал в этой статье

web.config

<location path="Content">
    <system.webServer>
      <staticContent>

    <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" 
    cacheControlMaxAge="365.00:00:00" />

    <clientCache cacheControlMode="UseExpires" httpExpires="Mon, 01 May 2023 00:00:00 GMT" />

      </staticContent>
    </system.webServer>
</location>

когда я пытаюсь получить доступ к файлу css в папке содержимого: http://localhost:11111/Content/bootstrap.min.css

я получаю следующую ошибку

Ошибка:

Ошибка HTTP 500.19 -

Внутренняя ошибка сервера. Невозможно получить доступ к запрошенной странице, поскольку соответствующие данные конфигурации для страницы недействительны.

Module           CustomErrorModule
Notification     SendResponse
Handler          StaticFile
Error Code       0x8007000d

Ошибка конфигурации Элемент конфигурации clientCache уже определен

я знаю, что clientCache уже определено, но я обеспокоен и хочу знать, как установить и Cache-Control, и Expires в заголовках ответов?

Любая помощь была бы замечательной.

Обновление:

Как ответил @Vitaly Kulikov и обсудил в комментарии и используя this и this сообщения я пришел к выводу, что в IIS мы можем установить оба Expires and Cache-Control в web.config, поэтому я планировал использовать OutputCache, чтобы установить срок действия как минимум для изображений, и он работает с Задержка в 0,9 миллисекунды. Надежда кому-то помогает.


person Shaiju T    schedule 13.03.2016    source источник


Ответы (1)


Согласно спецификации, вы не можете использовать их оба одновременно. Но у вас нет причин для этого, вам подойдет любой из них.

Спецификация

Если вы посмотрите на исходный код Chrome, кеширование в браузере есть несколько простых правил

Первый:

Директива max-age имеет приоритет над Expires, поэтому, если max-age присутствует в ответе, вычисление просто: freshness_lifetime = max_age_value

Второй:

В противном случае, если в ответе присутствует Expires, расчет будет следующим: freshness_lifetime = expires_value - date_value

Третий:

Если мы пропустили предыдущие шаги и «cache-control»! = «Must-revalidate», тогда у браузера есть еще одно правило кеширования: он кэширует ресурс в течение 10% времени, прошедшего с даты последнего изменения ресурса.

Все, никаких правил.

person Vitaly Kulikov    schedule 16.03.2016
comment
спасибо за ответ, все известные сайты установили их оба, и я вижу, что переполнение стека установлено как Expires, так и max-age для их изображений и css и т. д., например: Cache-Control:public, max-age=60 Expires:Sun, 13 Mar 2016 08:05:18 GMT как они это делают? они используют web.config или настраивают в своем CDN? - person Shaiju T; 16.03.2016
comment
Большинство известных сайтов не используют IIS. Но Tomcat, Apache Web Server или Nginx можно настроить для одновременного возврата обоих заголовков. - person Vitaly Kulikov; 16.03.2016
comment
Я отредактировал свой ответ, чтобы уточнить, как работает кеширование браузера. - person Vitaly Kulikov; 16.03.2016
comment
вы имеете в виду, что IIS не предоставляет эту опцию, хорошо, если я установил cacheControlMode="UseMaxAge", мне не хватает заголовка срока действия в ответ, а тест скорости Google говорит, что срок действия добавления истекает для изображений, css, js. что можно сделать ? - person Shaiju T; 16.03.2016
comment
Page Speed ​​Test написан человеком, в его логике тоже есть ошибки. Кому вы верите больше, исходному коду Chrome или какой-то веб-странице? - person Vitaly Kulikov; 16.03.2016
comment
Я тестирую сайт, используя скорость Google или Yslow, как советуют такие разработчики, как вы, у меня такая же проблема этот народ столкнулся, в любом случае я оставлю проблему с истечением срока действия для js and css, я планировал использовать OutputCache, чтобы установить срок действия по крайней мере для изображений, и он работает, спасибо за ответ, могу ли я использовать Nginx и IIS с asp mvc, если да, то какие ссылки? - person Shaiju T; 16.03.2016