У меня есть статический контент с Max-Age
прикрепленными к нему заголовками управления кэшем, поэтому клиенты будут кэшировать статический контент. Тем не менее IIS 7.5 по-прежнему отправляет этот заголовок, когда есть сообщения об ошибках, рекомендующие клиенту кешировать это.
Это отрицательно сказывается на том, что некоторые прокси-серверы затем кэшируют этот ответ об ошибке. Я мог бы, Vary: Accept,Accept-Encoding
но это на самом деле не решает основную проблему Max-Age
выхода из ошибок.
Текущий соответствующий web.config
раздел IIS :
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
</configuration>
Есть ли способ сделать так, чтобы мы не говорили клиентам или прокси кешировать коды ошибок 400/500?
Ответы:
Я создал элементарный тестовый набор.
Когда я запускаю тесты с минимальным Web.config на IIS 7.0 (Интегрированный режим трубопровода в .NET 4.0), все проходит;
Cache-Control
заголовок ответа тестового файла устанавливается в томprivate
случае, если егоAccept
заголовок запроса не совпадает с заголовком файлаContent-Type
.Это наводит меня на мысль, что у вас есть какой-то модуль, прерывающий процедуру статического кэширования IIS, или IIS 7.0 и 7.5 отличаются здесь.
Вот файлы, которые я использовал (без
some-script.js
так как это просто пустой файл):Web.Config:
test.html:
источник
Вы должны указать, какой тип контента вы собираетесь кэшировать. Например, вы можете кэшировать сценарии, CSS, изображения .. и т. д. так что используйте
<location path ="Scripts">
тег перед<system.webServer>
тегом. так что ваш веб-конфиг выглядит так.источник