Существует ли стандарт для каких действий F5и Ctrl + F5триггеров в веб-браузерах?
Однажды я экспериментировал с IE6 и Firefox 2.x. F5 Обновление вызовет запрос HTTP отправляется на сервер с If-Modified-Since
заголовком, в то время как Ctrl + F5не будет иметь такой заголовок. В моем понимании, я F5 постараюсь максимально использовать кэшированный контент, в то время Ctrl + F5 как намерен отказаться от всего кэшированного контента и просто снова извлечь весь контент с серверов.
Но сегодня я заметил, что в некоторых последних браузерах (Chrome, IE8) он больше не работает таким образом. Обе F5и Ctrl + F5отправьте If-Modified-Since
шапку.
Итак, как это должно работать, или (если нет стандарта), как основные браузеры отличаются тем, как они реализуют эти функции обновления?
Ответы:
Вообще говоря:
F5может дать вам ту же страницу, даже если содержание изменилось, потому что это может загрузить страницу из кэша. Но Ctrl- F5форсирует обновление кэша и гарантирует, что если контент будет изменен, вы получите новый контент.
источник
Это зависит от браузера, но они ведут себя аналогичным образом.
Я тестировал FF, IE7, Opera и Chrome.
F5обычно обновляет страницу, только если она изменена. Браузер обычно старается использовать все типы кэша в максимально возможной степени и добавляет к запросу заголовок «If-Modified-Since». Opera отличается отправкой «Cache-Control: no-cache».
CTRL- F5используется для принудительного обновления без учета кеша. IE7 добавляет «Cache-Control: no-cache», как и FF, который также добавляет «Pragma: no-cache». Chrome выполняет обычное «If-Modified-Since», а Opera игнорирует ключ.
Если я правильно помню, именно Netscape был первым браузером, добавившим поддержку управления кэшем, добавив «Pragma: No-cache», когда вы нажимали CTRL- F5.
Изменить: обновленная таблица
Приведенная ниже таблица обновлена информацией о том, что произойдет, когда будет нажата кнопка обновления браузера (после запроса Джоэла Кехорна ), и "max-age = 0" Cache-control-header.
Обновленная таблица, 27 сентября 2010
Проверенные версии:
Ноты:
Версия 3.0.6 отправляет I и C, но 3.1.6 открывает страницу в новой вкладке, делая обычный запрос только с «I».
Версия 10.62 ничего не делает. 9.61 может сделать C, если это не опечатка в моей старой таблице.
Примечание о Chrome 6.0.472 : если вы выполняете принудительную перезагрузку (например, CTRL- F5), она ведет себя так, как если бы URL-адрес был внутренне помечен, чтобы всегда выполнять принудительную перезагрузку. Флаг сбрасывается, если вы идете в адресную строку и нажимаете ввод.
источник
Я реализовал кросс-браузер-совместимую страницу, чтобы протестировать поведение обновления браузера (вот исходный код ) и получить результаты, аналогичные @some, но для современных браузеров:
источник
По крайней мере в Firefox (v3.5), кеш, кажется, отключен, а не просто очищен. Если на странице несколько экземпляров одного и того же изображения, оно будет передано несколько раз. Это также относится и к
img
тегам, которые впоследствии добавляются через Ajax / JavaScript.Поэтому, если вам интересно, почему браузер несколько сотен раз загружает один и тот же маленький значок на ваш сайт Ajax с автообновлением, это потому, что вы изначально загрузили страницу, используя CTRL- F5.
источник
IE7 / 8/9, кажется, ведут себя по-разному в зависимости от того, на какой странице находится фокус или нет.
Если щелкнуть страницу и нажать « CTRL+ F5», в заголовки запроса будет включено «Cache-Control: no-cache». Если вы нажмете в адресной строке / адресной строке, нажмите CTRL+, F5это не так.
источник
Когда пользователь нажимает, F5хотя новый запрос отправляется на веб-сервер, он также получает ответ на запрос. Но когда заголовок ответа анализируется, он проверяет необходимую информацию в кэше браузера. Если требуемая информация в кеше не истекла, то эта информация восстанавливается из самого кеша.
Когда пользователь нажимает CTRL- F5даже тогда новый запрос отправляется на веб-сервер и получает ответ. Но на этот раз, когда заголовок ответа анализируется, он не проверяет необходимую информацию в кеше и выводит только обновленную информацию только на сервер формы.
источник