wake-up-neo.com

Welche Anforderungen werden durch die Aktualisierungen von "F5" und "Strg + F5" des Browsers generiert?

Gibt es einen Standard für welche Aktionen F5 und Ctrl + F5 in Webbrowsern auslösen?

Ich habe einmal in IE6 und Firefox 2.x experimentiert. Das F5 Eine Aktualisierung würde eine HTTP-Anforderung auslösen, die mit dem Header If-Modified-Since an den Server gesendet wird Ctrl + F5 Einen solchen Header hätte ich nicht. Nach meinem Verständnis, F5 wird versuchen, zwischengespeicherten Inhalt so weit wie möglich zu nutzen, während Ctrl + F5 soll den gesamten zwischengespeicherten Inhalt aufgeben und einfach den gesamten Inhalt erneut von den Servern abrufen.

Aber heute ist mir aufgefallen, dass es in einigen der neuesten Browser (Chrome, IE8) nicht mehr so ​​funktioniert. Beide F5 und Ctrl + F5 Senden Sie den Header If-Modified-Since.

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

387
Morgan Cheng

Allgemein gesagt:

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

300
dancavallaro

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

Ich habe FF, IE7, Opera und Chrome getestet.

F5 In der Regel wird die Seite nur aktualisiert, wenn sie geändert wurde. In der Regel versucht der Browser, alle Arten von Cache so weit wie möglich zu verwenden, und fügt der Anforderung einen Header "If-modified-since" hinzu. Opera unterscheidet sich durch das Senden eines "Cache-Control: no-cache".

CTRL-F5 wird verwendet, um ein Update zu erzwingen, wobei der Cache ignoriert wird. IE7 fügt ein "Cache-Control: no-cache" hinzu, ebenso wie FF, das auch "Pragma: no-cache" hinzufügt. Chrome führt ein normales "If-modified-since" aus und Opera ignoriert den Schlüssel.

Wenn ich mich richtig erinnere, war es Netscape, der als erster Browser die Unterstützung für die Cachesteuerung hinzufügte, indem Sie auf "Pragma: No-Cache" drückten CTRL-F5.

Bearbeiten: Aktualisierte Tabelle

Die folgende Tabelle enthält Informationen darüber, was passiert, wenn auf die Schaltfläche zum Aktualisieren des Browsers geklickt wird (nach einer Anfrage von Joel Coehoorn ) und den Cache-Kontroll-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 mit nur "I".

  2. Version 10.62 macht nichts. 9.61 könnte C tun, 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) Es verhält sich so, als ob die URL intern markiert ist, um immer ein erzwungenes Neuladen durchzuführen. Die Flagge wird gelöscht, wenn Sie in die Adressleiste gehen und die Eingabetaste drücken.

520
some

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

enter image description here

68

Zumindest in Firefox (v3.5) scheint der Cache deaktiviert zu sein, anstatt nur geleert zu werden. Wenn auf einer Seite mehrere Instanzen desselben Bildes vorhanden sind, wird es mehrmals übertragen. Dies gilt auch für img Tags, die später über Ajax/JavaScript hinzugefügt werden.

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

9
mermshaus

IE7/8/9 scheint sich je nachdem, ob die Seite den Fokus hat oder nicht, unterschiedlich zu verhalten.

Wenn Sie auf die Seite und klicken CTRL+F5 dann ist "Cache-Control: no-cache" in den Anforderungsköpfen enthalten. Wenn Sie in die Adressleiste klicken, drücken Sie CTRL+F5 es ist nicht.

3
Phil Haselden

Wenn Benutzer drücken F5 Obwohl eine neue Anfrage an den Webserver geht und auch eine Antwort auf die Anfrage erhält. Wenn der Antwortheader jedoch analysiert ist, 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 der Benutzer auf klickt CTRL-F5 Auch dann geht eine neue Anfrage an den Webserver und erhält eine Antwort. Wenn der Antwortheader dieses Mal jedoch analysiert wird, werden keine erforderlichen Informationen im Cache überprüft und nur alle aktualisierten Informationen vom Server abgerufen.

1
Sunil