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-Since
Header 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-Since
Header.
Wie soll das funktionieren oder (wenn es keinen Standard gibt) wie unterscheiden sich die wichtigsten Browser darin, wie sie diese Aktualisierungsfunktionen implementieren?
Antworten:
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.
quelle
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
Getestete Versionen:
Anmerkungen:
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".
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.
quelle
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:
quelle
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ür
img
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.
quelle
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 .
quelle
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.
quelle