Jakie żądania odświeżają przeglądarki "F5" i "Ctrl + F5"?
Czy istnieje standard dla jakich działań F5i CTRL + F5 wyzwalać w przeglądarkach internetowych?
Kiedyś eksperymentowałem w IE6 i Firefoksie 2.x. f5 refresh wywoła żądanie HTTP wysłane do serwera z nagłówkiem If-Modified-Since
, podczas gdy Ctrl + F5 nie ma takiego nagłówka. W moim rozumieniu, F5 będzie starał się wykorzystywać zawartość buforowaną w jak największym stopniu, podczas gdy Ctrl + F5 ma na celu porzucenie całej zawartości buforowanej i po prostu Odzyskaj całą zawartość z serwerów ponownie.
Ale dzisiaj zauważyłem, że w niektórych najnowszych przeglądarkach (Chrome, IE8) już tak nie działa. Zarówno F5 jak i Ctrl + F5 wysyłają nagłówek If-Modified-Since
.
Więc jak to ma działać, lub (jeśli nie ma standardu) czym różnią się główne przeglądarki w jaki sposób implementują te funkcje odświeżania?
6 answers
Ogólnie:
F5 może dać tę samą stronę, nawet jeśli zawartość zostanie zmieniona, ponieważ może załadować stronę z pamięci podręcznej. Ale Ctrl-F5 wymusza odświeżenie pamięci podręcznej i gwarantuje, że jeśli zawartość zostanie zmieniona, otrzymasz nową zawartość.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-11 09:20:34
To zależy od przeglądarki, ale zachowują się w podobny sposób.
Testowałem FF, IE7, operę i Chrome.F5 Zwykle aktualizuje Stronę tylko wtedy, gdy została zmodyfikowana. Przeglądarka zwykle próbuje używać wszystkich typów pamięci podręcznej w jak największym stopniu i dodaje nagłówek" If-modified-since " do żądania. Opera różni się wysyłaniem "Cache-Control: no-cache".
CTRL-F5 jest używany do wymuszenia aktualizacji, bez uwzględnienia pamięci podręcznej. IE7 dodaje " Cache-Control: no-cache", podobnie jak FF, który również dodaje "Pragma: no-cache". Chrome wykonuje normalny "If-modified-since", a Opera ignoruje ten klucz.
Jeśli dobrze pamiętam, to Netscape był pierwszą przeglądarką, która dodała obsługę cache-control przez dodanie "Pragma: No-cache" po naciśnięciu CTRL-F5 .
Edit: zaktualizowana tabela
Poniższa tabela jest aktualizowana o informacje o tym, co się stanie po kliknięciu przycisku odświeżania przeglądarki (po zapytaniu przez Joel Coehoorn ) i nagłówek zarządzania pamięcią podręczną "max-age=0".
Aktualizacja tabeli, 27 września 2010
┌────────────┬───────────────────────────────────────────────┐
│ UPDATED │ Firefox 3.x │
│27 SEP 2010 │ ┌────────────────────────────────────────────┤
│ │ │ MSIE 8, 7 │
│ Version 3 │ │ ┌─────────────────────────────────────────┤
│ │ │ │ Chrome 6.0 │
│ │ │ │ ┌──────────────────────────────────────┤
│ │ │ │ │ Chrome 1.0 │
│ │ │ │ │ ┌───────────────────────────────────┤
│ │ │ │ │ │ Opera 10, 9 │
│ │ │ │ │ │ ┌────────────────────────────────┤
│ │ │ │ │ │ │ │
├────────────┼──┼──┼──┼──┼──┼────────────────────────────────┤
│ F5│IM│I │IM│IM│C │ │
│ SHIFT-F5│- │- │CP│IM│- │ Legend: │
│ CTRL-F5│CP│C │CP│IM│- │ I = "If-Modified-Since" │
│ ALT-F5│- │- │- │- │*2│ P = "Pragma: No-cache" │
│ ALTGR-F5│- │I │- │- │- │ C = "Cache-Control: no-cache" │
├────────────┼──┼──┼──┼──┼──┤ M = "Cache-Control: max-age=0" │
│ CTRL-R│IM│I │IM│IM│C │ - = ignored │
│CTRL-SHIFT-R│CP│- │CP│- │- │ │
├────────────┼──┼──┼──┼──┼──┤ │
│ Click│IM│I │IM│IM│C │ With 'click' I refer to a │
│ Shift-Click│CP│I │CP│IM│C │ mouse click on the browsers │
│ Ctrl-Click│*1│C │CP│IM│C │ refresh-icon. │
│ Alt-Click│IM│I │IM│IM│C │ │
│ AltGr-Click│IM│I │- │IM│- │ │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘
Przetestowane wersje:
- Firefox 3.1.6 i 3.0.6 (WINXP)
- MSIE 8.0.6001 i 7.0.5730.11 (WINXP)
- Chrome 6.0.472.63 i 1.0.151.48 (WINXP)
- Opera 10.62 i 9.61 (WINXP)
Uwagi:
Wersja 3.0.6 wysyła I I C, ale 3.1.6 otwiera stronę w nowej karcie, składanie zwykłego wniosku tylko przez "I".
Wersja 10.62 nic nie robi. 9.61 może zrobić C, chyba że to była literówka w moim starym stole.
Uwaga O Chrome 6.0.472: jeśli wykonasz wymuszone przeładowanie (jak CTRL-F5 ) zachowuje się tak, jakby adres URL był wewnętrznie oznaczony, aby zawsze wykonać wymuszone przeładowanie. Flaga zostanie wyczyszczona po przejściu do paska adresu i naciśnięciu klawisza enter.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 18:23:37
Zaimplementowałem stronę kompatybilną z wieloma przeglądarkami, aby przetestować odświeżanie przeglądarki (Oto kod źródłowy ) i uzyskać wyniki podobne do @some, ale dla nowoczesnych przeglądarek:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-23 16:26:03
W Firefoksie (v3.5) pamięć podręczna wydaje się być wyłączona , a nie po prostu wyczyszczona. Jeśli na stronie znajduje się wiele instancji tego samego obrazu, zostanie on przesłany wiele razy. Tak jest również w przypadku znaczników img
, które są dodawane następnie za pomocą Ajax / JavaScript.
Więc jeśli zastanawiasz się, dlaczego przeglądarka pobiera tę samą małą ikonę kilkaset razy w witrynie automatycznego odświeżania Ajax, to dlatego, że początkowo załadowałeś stronę za pomocą CTRL-F5 .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-11 09:25:51
IE7/8 / 9 wydaje się zachowywać inaczej w zależności od tego, czy strona ma fokus, czy nie.
Jeśli klikniesz na stronę i CTRL+F5 następnie "Cache-Control: no-cache" jest zawarte w nagłówkach żądań. Jeśli klikniesz w pasku Lokalizacja / Adres, naciśnij CTRL+F5 nie jest.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-11 09:26:02
Gdy użytkownik naciśnie F5 chociaż nowe żądanie trafia do serwera WWW i również otrzymuje odpowiedź na żądanie. Ale po przetworzeniu nagłówka responce sprawdza wymagane informacje w pamięci podręcznej przeglądarki. Jeśli wymagane informacje w pamięci podręcznej nie wygasły, informacje te są przywracane z samego bufora.
Gdy użytkownik kliknie na CTRL-F5 nawet wtedy nowe żądanie trafia do serwera WWW i otrzymuje odpowiedź. Ale tym razem, gdy nagłówek responce jest Parsowany, nie sprawdź wszystkie wymagane informacje w pamięci podręcznej i przynieś wszystkie zaktualizowane informacje tylko na serwerze formularza.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-11 09:26:26