Welche Anforderungen generieren die Aktualisierungen von Browsern "F5" und "Strg + F5"?

394

Gibt es einen Standard für welche Aktionen F5und Ctrl + F5Auslöser in Webbrowsern?

Ich habe einmal in IE6 und Firefox 2.x experimentiert. Die F5 Aktualisierung würde eine HTTP-Anforderung auslösen, die mit einem If-Modified-SinceHeader an den Server gesendet wird , während Ctrl + F5ein solcher Header nicht vorhanden wäre. Nach meinem Verständnis F5 wird versucht, zwischengespeicherten Inhalt so weit wie möglich zu verwenden, während Ctrl + F5 beabsichtigt wird, alle zwischengespeicherten Inhalte aufzugeben und einfach alle Inhalte erneut von den Servern abzurufen.

Aber heute habe ich festgestellt, dass es in einigen der neuesten Browser (Chrome, IE8) nicht mehr so ​​funktioniert. Beides F5und Ctrl + F5sende den If-Modified-SinceHeader.

Wie soll das funktionieren oder (wenn es keinen Standard gibt) wie unterscheiden sich die wichtigsten Browser darin, wie sie diese Aktualisierungsfunktionen implementieren?

Morgan Cheng
quelle
10
FWIW: zwar ist dies könnte ein Super User Thema sein, und kann sogar dazu bestimmt wurde als etwas Endbenutzer-Focused wenn ursprünglich gebeten, an dieser Stelle wurde es sowohl beantwortet und von Programmierern und Web - Entwickler verwiesen und soll wahrscheinlich hier bleiben . SU hat bereits mehrere andere,
endbenutzerorientiertere
2
xkcd.com/1854
Sudo Bangbang

Antworten:

313

Allgemein gesagt:

F5Möglicherweise erhalten Sie dieselbe Seite, auch wenn der Inhalt geändert wird, da die Seite möglicherweise aus dem Cache geladen wird. Aber Ctrl- F5erzwingt eine Cache-Aktualisierung und garantiert, dass Sie den neuen Inhalt erhalten, wenn der Inhalt geändert wird.

Dancavallaro
quelle
86
Dies ist korrekt, aber beachten Sie, dass während Strg + F5 den Browser veranlasst, den Cache zu löschen und eine neue vom Server anzufordern, der Server möglicherweise den Header ohne Cache ignoriert und eine serverseitig zwischengespeicherte Seite bereitstellt. Daher kann sogar Strg + F5 eine alte Version der Seite zurückgeben, wenn der Server den No-Cache-Header ignoriert.
AaronLS
F5 aktualisiert die Seite - STRG + F5 führt eine "harte" Aktualisierung durch.
Dimitri Dewaele
Erwähnen Sie auch, dass Strg-F5 ein Formular sendet, falls angegeben.
Jawo
Ok, wenn Sie also Strg + F5 drücken, weisen Sie Ihren Browser an, den Cache nicht zu verwenden. Was passiert jedoch bei nachfolgenden Anforderungen an dieselbe Seite? Ich meine, können Sie ältere Versionen der Seite sehen, nachdem Sie die älteste gesehen haben? Wenn ich Version 1 der Seite sehe, weil sie zwischengespeichert ist, aber bereits Version 2 verfügbar ist, verstehe ich, dass ich durch Drücken von Strg + F5 Version 2 sehe. Dann schließe ich meinen Browser und öffne diese Seite erneut. ¿Sehe ich Version 1 oder sehe ich immer noch Version 2? Vielen Dank.
Molerus
525

Es liegt am Browser, aber sie verhalten sich ähnlich.

Ich habe FF, IE7, Opera und Chrome getestet.

F5Aktualisiert die Seite normalerweise nur, wenn sie geändert wird. Der Browser versucht normalerweise, alle Arten von Cache so oft wie möglich zu verwenden, und fügt der Anforderung einen Header "Wenn geändert seit" hinzu. Opera unterscheidet sich durch das Senden eines "Cache-Control: no-cache".

CTRL- F5wird verwendet, um eine Aktualisierung zu erzwingen, wobei jeglicher Cache ignoriert wird. IE7 fügt ein "Cache-Control: kein Cache" hinzu, ebenso wie FF, das auch "Pragma: kein Cache" hinzufügt. Chrome führt ein normales "Wenn geändert seit" durch und Opera ignoriert den Schlüssel.

Wenn ich mich richtig erinnere, war Netscape der erste Browser, der Unterstützung für die Cache-Steuerung hinzufügte, indem er "Pragma: Kein Cache" hinzufügte, als Sie CTRL- drückten F5.

Bearbeiten: Tabelle aktualisiert

Die folgende Tabelle enthält Informationen darüber, was passieren wird, wenn auf die Aktualisierungsschaltfläche des Browsers geklickt wird (auf Anfrage von Joel Coehoorn ), und den Cache-Steuerelement-Header "max-age = 0".

Aktualisierte Tabelle, 27. September 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│- │                                │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘

Getestete Versionen:

  • Firefox 3.1.6 und 3.0.6 (WINXP)
  • MSIE 8.0.6001 und 7.0.5730.11 (WINXP)
  • Chrome 6.0.472.63 und 1.0.151.48 (WINXP)
  • Opera 10.62 und 9.61 (WINXP)

Anmerkungen:

  1. Version 3.0.6 sendet I und C, aber 3.1.6 öffnet die Seite in einem neuen Tab und stellt eine normale Anfrage nur mit "I".

  2. Version 10.62 macht nichts. 9.61 könnte C machen, es sei denn, es war ein Tippfehler in meiner alten Tabelle.

Hinweis zu Chrome 6.0.472 : Wenn Sie ein erzwungenes Neuladen durchführen (wie CTRL- F5), verhält es sich so, als ob die URL intern markiert ist, um immer ein erzwungenes Neuladen durchzuführen. Das Flag wird gelöscht, wenn Sie in die Adressleiste gehen und die Eingabetaste drücken.

etwas
quelle
5
@ Joel Coehoorn: Die Tabelle wurde durch Klicken auf die Schaltfläche Aktualisieren aktualisiert. Ich muss ASCII-Grafiktabellen lieben, nicht wahr? Die Farbcodierung war nur ein Nebeneffekt der Code-Farbcodierung.
einige
11
Können Sie es nicht als richtige HTML-Tabelle tun?
John Topley
13
Zu Ihrer Information
Kip
18
@ John Topley: Tische sind nicht erlaubt, daher lautet die Antwort nein.
einige
1
Tolle Arbeit an diesem Tisch - das gehört zum Quirksmode. +1. Ich frage mich, ob es auch Unterschiede gibt, welche Header verwendet werden, um Ressourcen innerhalb der aktualisierten Seite anzufordern, wie Bilder, Stylesheets usw.
James Hart
68

Ich habe eine browserübergreifende Seite implementiert, um das Aktualisierungsverhalten des Browsers zu testen (hier ist der Quellcode ) und ähnliche Ergebnisse wie bei @some zu erhalten, jedoch für moderne Browser:

Geben Sie hier die Bildbeschreibung ein

Pavel Podlipensky
quelle
Die Links auf Ihrer Seite sind defekt. Ich habe den Link in der Antwort korrigiert, aber viele Links auf dieser Seite sind defekt. podlipensky.com/examples/refreshbutton/index.html , podlipensky.com/post/2012/02/27/…
Juan Mendes
Tut mir leid, dass ich eine Blog-Migration durchführe. Links werden vorerst so schnell wie möglich repariert - bitte gehen Sie zum Github-Repository und laden Sie Beispiele herunter.
Pavel Podlipensky
Die Links sind immer noch defekt. Migration nicht abgeschlossen?
Bernard
Können Sie bitte Ihre Antwort mit der aktuellen Version der Browser aktualisieren, insbesondere mit der mobilen und Desktop-Safari @PavelPodlipensky?
Greg Dubicki
9

Zumindest in Firefox (v3.5) scheint der Cache deaktiviert und nicht einfach gelöscht zu sein. Wenn eine Seite mehrere Instanzen desselben Bildes enthält, wird es mehrmals übertragen. Das gilt auch fürimg Tags, die anschließend über Ajax / JavaScript hinzugefügt werden.

Wenn Sie sich also fragen, warum der Browser einige hundert Mal dasselbe kleine Symbol auf Ihrer Ajax-Site mit automatischer Aktualisierung herunterlädt, haben Sie die Seite zunächst mit CTRL- geladen F5.

Mermshaus
quelle
3

IE7 / 8/9 scheint sich unterschiedlich zu verhalten, je nachdem, ob die Seite fokussiert ist oder nicht.

Wenn Sie auf die Seite und CTRL+ klicken, F5ist "Cache-Control: no-cache" in den Anforderungsheadern enthalten. Wenn Sie in die Standort- / Adressleiste klicken, drücken Sie CTRL+, F5dies ist nicht der Fall .

Phil Haselden
quelle
1

Wenn der Benutzer drückt, F5obwohl eine neue Anfrage an den Webserver gesendet wird, erhalten Sie auch eine Antwort auf die Anfrage. Wenn der Responce-Header jedoch analysiert wird, werden die erforderlichen Informationen im Browser-Cache überprüft. Wenn die erforderlichen Informationen im Cache nicht abgelaufen sind, werden diese Informationen aus dem Cache selbst wiederhergestellt.

Wenn Anwender auf CTRL- F5selbst dann neue Anfrage wird an Web - Server und eine Antwort - bekommen. Wenn diesmal der Antwortheader analysiert wird, werden keine erforderlichen Informationen im Cache überprüft und nur alle aktualisierten Informationen vom Server bereitgestellt.

naXa
quelle