Подтвердить что ты не робот

Кеширование браузера. Почему IE9 всегда показывает http 304, когда на самом деле он не попал в сеть?

Я пытаюсь правильно настроить кеширование и назначил заголовки Expires до 365 дней в будущем, которые работают правильно, но не корректно отображаются в IE9. Кто-нибудь знает, почему?

Когда вы посещаете какой-либо сайт в IE9 (например, www.google.com), затем нажмите "Enter" в адресной строке, чтобы просмотреть его с полным кэшированием, он показывает много дополнительных 304, которые Fiddler не показывает.

Взглянув на вкладку сетевого инспектора (на F12), IE9 показывает, что он получил 304 Not Modified ответы для файлов CSS и JS и 3 изображения (возможно, изображения с измененными датами в течение примерно в прошлом месяце - остальные 30 изображений, которые не показаны, старше).

Однако, по словам Фиддлера и просмотра журналов IIS на сервере на веб-сайте, который я разрабатываю, он фактически не делал эти запросы. Временная шкала сети IE9 показывает эти серые 302s как отсутствие времени ожидания и время ответа "< 1 мс", тогда как если я нахожу F5, они также являются серыми 302, но отображаются как несколько миллисекунд, ожидающих и загружающих время (и они попадают в сеть).

Итак, почему сетевой инспектор IE9 считает, что он выдал условный запрос? Он действительно выдал запрос, который был удовлетворен в сетевом стеке где-то, прежде чем он попал к Fiddler?

Chrome показывает все запросы, включая все изображения, как серый 200 (из кеша), кроме самой страницы, которая является черным 200 (что верно в соответствии с журналами Fiddler и IIS).

Firebug показывает серый 200 OK для CSS и JS и, как ни странно, только одно изображение (также верно, если предположить, что серый 200 означает из кеша, но зачем показывать только эти ресурсы, а не все остальные изображения?)

Я читал сообщения Eric Lawrence о кэшировании IE9 и сетевом стеке, но он не упоминает об этом нечетном поведении.

4b9b3361

Ответ 1

Просто, чтобы быть ясным, если вы не видите его в Fiddler, он не попал в сеть.

На вкладке "Сеть IE" есть несколько ошибок: одна из них заключается в том, что трудно различать удаленный кеш, который удовлетворен локально (например, отсутствие сети), и тот, который требует повторной проверки с сервером (например, 304),

Это потому, что кэш обслуживается в WinINET, значительно ниже вкладки "Сеть", которая находится выше URLMon.

Сказав это, вот еще одна ссылка, которую вы можете проверить: Блог IEInternals по условным запросам