Czy istnieje standard określający akcje F5i Ctrl + F5wyzwalacze w przeglądarkach internetowych?
Kiedyś eksperymentowałem w IE6 i Firefox 2.x. F5 Odświeżania by wywołać żądanie HTTP wysyłane do serwera z If-Modified-Since
nagłówka, a Ctrl + F5nie miałby takiego nagłówka. W moim rozumieniu, F5 postaram się wykorzystać zawartość pamięci podręcznej w jak największym stopniu, podczas gdy jej Ctrl + F5 celem jest porzucenie całej pamięci podręcznej i ponowne pobranie całej zawartości z serwerów.
Ale dzisiaj zauważyłem, że w niektórych najnowszych przeglądarkach (Chrome, IE8) nie działa już w ten sposób. Zarówno F5i Ctrl + F5wyślij If-Modified-Since
nagłówek.
Więc jak to ma działać lub (jeśli nie ma standardu) w jaki sposób główne przeglądarki różnią się tym, jak wdrażają te funkcje odświeżania?
Odpowiedzi:
Ogólnie rzecz biorąc:
F5może dać ci tę samą stronę, nawet jeśli zawartość zostanie zmieniona, ponieważ może załadować stronę z pamięci podręcznej. Ale Ctrl- F5wymusza odświeżenie pamięci podręcznej i gwarantuje, że jeśli zawartość zostanie zmieniona, otrzymasz nową zawartość.
źródło
To zależy od przeglądarki, ale zachowują się w podobny sposób.
Testowałem FF, IE7, Opera i Chrome.
F5zwykle aktualizuje stronę tylko wtedy, gdy jest zmodyfikowana. Przeglądarka zwykle próbuje użyć wszystkich typów pamięci podręcznej w jak największym stopniu i dodaje do żądania nagłówek „Jeśli zmodyfikowano od”. Opera różni się wysyłaniem „Kontroli pamięci podręcznej: bez pamięci podręcznej”.
CTRL- F5służy do wymuszenia aktualizacji, niezależnie od pamięci podręcznej. IE7 dodaje „Cache-Control: no-cache”, podobnie jak FF, który dodaje również „Pragma: no-cache”. Chrome wykonuje normalne „Jeśli zmodyfikowano od”, a Opera ignoruje ten klucz.
Jeśli dobrze pamiętam, to Netscape był pierwszą przeglądarką, która dodała obsługę kontroli pamięci podręcznej, dodając „Pragma: No-cache” po naciśnięciu CTRL- F5.
Edycja: Zaktualizowano tabelę
Poniższa tabela zawiera informacje o tym, co się stanie, gdy kliknięty zostanie przycisk odświeżania przeglądarki (na żądanie Joela Coehoorna ) oraz nagłówek „max-age = 0” Cache-control.
Zaktualizowana tabela, 27 września 2010 r
Testowane wersje:
Uwagi:
Wersja 3.0.6 wysyła I i C, ale 3.1.6 otwiera stronę w nowej karcie, wysyłając normalne żądanie tylko z „I”.
Wersja 10.62 nic nie robi. 9.61 może zrobić C, chyba że była to literówka w mojej starej tabeli.
Uwaga na temat Chrome 6.0.472 : jeśli wykonasz wymuszone przeładowanie (jak CTRL- F5), zachowa się tak, jakby adres URL był wewnętrznie oznaczony, aby zawsze wymuszał przeładowanie. Flaga zostanie wyczyszczona, jeśli przejdziesz do paska adresu i naciśniesz enter.
źródło
Zaimplementowałem stronę kompatybilną z różnymi przeglądarkami, aby przetestować zachowanie przeglądarki w odświeżaniu (tutaj jest kod źródłowy ) i uzyskać wyniki podobne do @some, ale dla nowoczesnych przeglądarek:
źródło
Przynajmniej w przeglądarce Firefox (wersja 3.5) pamięć podręczna wydaje się być wyłączona, a nie po prostu wyczyszczona. Jeśli na stronie znajduje się wiele wystąpień tego samego obrazu, zostanie on przesłany wiele razy. Dotyczy to również
img
tagów dodawanych później przez Ajax / JavaScript.Więc jeśli zastanawiasz się, dlaczego przeglądarka wciąż pobiera tę samą małą ikonę kilkaset razy na stronie automatycznego odświeżania Ajax, to dlatego, że początkowo załadowałeś stronę za pomocą CTRL- F5.
źródło
IE7 / 8/9 wydają się zachowywać inaczej w zależności od tego, czy strona jest fokusowa, czy nie.
Jeśli klikniesz na stronę i CTRL+, F5wówczas nagłówki żądania zawierają „Cache-Control: no-cache”. Jeśli klikniesz na pasku adresu / adresu, a następnie naciśnij CTRL+ F5to nie jest.
źródło
Gdy użytkownik naciśnie, F5chociaż nowe żądanie trafi do serwera WWW, otrzymasz również odpowiedź na to żądanie. Ale kiedy nagłówek odpowiedzi jest analizowany, 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 samej pamięci podręcznej.
Gdy użytkownik kliknie CTRL- F5nawet wtedy nowe żądanie trafia do serwera WWW i otrzymuje odpowiedź. Ale tym razem, gdy nagłówek odpowiedzi zostanie przeanalizowany, nie sprawdza żadnych wymaganych informacji w pamięci podręcznej i przekazuje wszystkie zaktualizowane informacje tylko z serwera.
źródło