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?

Author: Krzysztof Krasoń, 2008-12-22

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ść.

 322
Author: dancavallaro,
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:

  1. 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".

  2. 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.

 526
Author: some,
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:

Tutaj wpisz opis obrazka

 69
Author: Pavel Podlipensky,
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 .

 10
Author: mermshaus,
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.

 4
Author: Phil Haselden,
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.

 2
Author: naXa,
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