Вопрос с двумя частями (части тесно связаны): с политикой Завершающего тега OOTB по умолчанию, которую использует IIS7, почему мы не видим If-None-Match/304 взаимодействие, поскольку мы перешли через страницы?
Заголовки, возвращенные для запроса пустого кэша, например:
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):
Делает enableKernelCache ='true', расширяются на все статические файлы, освобождая Вас от потребности зарегистрировать расширения явно для предоставления CacheUntilChange как политики ядра (2):
(1) %systemroot %\System32\inetsrv\config\applicationHost.config
(2) http://labs.episerver.com/en/Blogs/Per/Archive/2009/3/Configuring-cache-expiration-on-IIS-7/
Обработка ETags и связанных с ними If-None-Match / If-Modified-Since в некоторой степени зависит от браузера. Вы можете попробовать несколько разных браузеров и посмотреть, что произойдёт - в общем, если вы не установите явное время истечения срока действия, я бы ожидал увидеть 304-е, как вы сказали.
Для кэширования ядра, оно включено для статических файлов по умолчанию. Чтобы помочь увидеть, что происходит, я нашел полезным выполнить следующую команду:
netsh http show cachestate
которая покажет информацию о файлах, которые в данный момент находятся в кэше.
Имейте в виду, что на файлы обычно нужно ссылаться пару раз в течение определенного промежутка времени, прежде чем ядро их кэширует.
.