Я пытаюсь правильно настроить кеширование и установил заголовки Expires на 365 дней в будущем, которые работают правильно, но не отображаются правильно в IE9. Кто-нибудь знает почему?
Когда вы посещаете любой веб-сайт в IE9 (например, www.google.com), затем нажмите Enter в адресной строке, чтобы вернуться к нему с полным кэшированием, он показывает много дополнительных 304, которые Fiddler не показывает.
Глядя на вкладку сетевого инспектора (на F12), IE9 показывает, что он получил 304 ответа «Не изменено» для файлов CSS и JS и 3 изображения (возможно, изображения с датами изменения примерно в прошлом месяце — остальные 30 не показанных изображений старше).
Однако, согласно Fiddler и просмотру журналов IIS на сервере на веб-сайте, который я разрабатываю, он фактически не отправлял эти запросы. На временной шкале сети IE9 эти серые 302 отображаются как отсутствие времени ожидания и время отклика «‹1 мс», тогда как, если я нажму F5, они также будут серыми 302, но будут показаны как время ожидания и загрузки в несколько миллисекунд (и они попадут в сеть).
Так почему же сетевой инспектор IE9 думает, что выдал для них условный запрос? Действительно ли он отправил запрос, который был удовлетворен где-то в сетевом стеке, прежде чем он попал в Fiddler?
Chrome показывает все запросы, включая все изображения, серым цветом 200 (из кеша), кроме самой страницы, которая имеет черный цвет 200 (что правильно согласно журналам Fiddler и IIS).
Firebug показывает серый 200 OK для CSS и JS и, как ни странно, только одно изображение (также правильно, если серый 200 означает из кеша, но почему показывать только эти ресурсы, а не все остальные изображения?)
Я читал сообщения в блоге Эрика Лоуренса о кэшировании IE9 и сетевом стеке, но он не упоминает об этом странном поведении.