Двухчастный вопрос (части тесно связаны): с использованием политики OOTB ETag по умолчанию, которую использует IIS7, почему мы не видим взаимодействие If-None-Match/304 как мы перемещаемся по страницам?ETags, IIS7, политика кэша ядра (enableKernelCache)
Заголовков возвращаются для запроса пустого кэша, например, являются:
Content-Type image/png
Last-Modified Thu, 03 Dec 2009 15:51:56 GMT
Accept-Ranges bytes
Etag "a8a0628a3074ca1:0"
Server Microsoft-IIS/7.0
X-Powered-By ASP.NET
Date Tue, 22 Dec 2009 19:47:36 GMT
Content-Length 1780
... и все же последующие доступы к странице не генерирует 304 туда-обратно для изображения?
Кроме того, по умолчанию applicationHost файл для IIS7 имеет следующее (1):
<caching enabled="true" enableKernelCache="true">
</caching>
ли enableKernelCache = 'истинный' распространяется на все статические файлы, освобождая вас от необходимости регистрации расширений явно предоставить CacheUntilChange как политика ядра (2):
<caching>
<profiles>
<add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
<add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
<add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
<add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
<add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
<add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" />
</profiles>
</caching>
(1)% SystemRoot% \ System32 \ инет SRV \ Config \ applicationHost.config
(2) http://labs.episerver.com/en/Blogs/Per/Archive/2009/3/Configuring-cache-expiration-on-IIS-7/
Спасибо, Рик; Я пробовал как IE8, так и FF 3.5, и считаю это поведение немного странным - он документирован где угодно? IIS7 (OOTB) не выпускает заголовки истечения, а только ETag; и все же последующие запросы на страницу не генерируют 304s для этих объектов? – Nariman
Единственная документация, о которой я знаю, - это спецификация HTTP. Интересно, видите ли вы оптимизацию за сеанс. Вы пробовали выйти из браузера (все окна), перезапустить и посмотреть, если это приведет к 304s? Есть ли открытая страница, которую я вижу, которая демонстрирует поведение, которое вы описываете? – RickNZ
Поскольку исходные ответы не имеют заголовка Cache-Control, браузер (в некоторой степени) свободно реализует свою собственную политику в отношении кэширования. В этом случае он выбирает кешировать изображения в течение всего сеанса. Если вы закроете вкладку в IE8 с вашим сайтом, а затем откройте новую вкладку и вернитесь на ту же страницу, вы увидите кучу запросов IMS/INM и 304 reponses для всех изображений. – RickNZ