Gibt es eine Möglichkeit, das Zwischenspeichern von Client-Browsern für bestimmte Websites zu deaktivieren?

10

Dies ist eine browserunabhängige Frage, aber wir testen mit IE9.

Eine der Web-Apps, die unsere Benutzer besuchen, wird zufällig zwischengespeichert, und Änderungen werden nicht angezeigt, wenn sie sollten. Keine andere Site hat dieses Problem und wir haben mit dem Anbieter zusammengearbeitet, der behauptet, dass es niemand anderem passiert. Wenn wir die Entwickler-Symbolleiste verwenden und "Aktualisierung vom Server erzwingen" auswählen, wird alles korrekt aktualisiert.

Anstatt das Problem wirklich zu lösen, denken wir daran, es zu umgehen, indem wir den Cache für diese bestimmte Site deaktivieren. Wir wissen jedoch nicht wie.

GollyJer
quelle

Antworten:

10

Die einzig richtige Möglichkeit, das Browser-Caching zu deaktivieren, sind HTTP-Header aus der Webanwendung. Der HTTP 1.1-Header "Cache-Control" allein sollte für jeden Browser nach dem Jahr 2000 ausreichen. Für zusätzlichen Schutz kann der Server jedoch sowohl HTTP 1.1 "Cache-Control" - als auch HTTP 1.0 "Expires" -Header zusammen ausgeben .

Eine hackige, aber manchmal gesehene Methode zur Behandlung der Cache-Ungültigmachung ist eine "Cachebuster" -String in URLs vom Server. Der Cachebuster basiert häufig auf Zeitstempeln und wird als Querystring zu jedem HTML-LINK hinzugefügt, um die URL eindeutig zu machen und nur einmal zu verwenden. So etwas wie http://example.org/filename.html?cb=<timestamp+random_value>. Dies ist hässlich und macht nichts, was die HTTP-Header nicht viel besser machen. Es kann jedoch als Hack für ein begrenztes Publikum (FX in einem Intranet) oder als zusätzliche Schutzschicht zusammen mit geeigneten HTTP-Headern verwendet werden.

AFAIK Es gibt keine Möglichkeit, das Caching für eine einzelne Site nur in Internet Explorer selektiv zu deaktivieren . Eine (verdammt komplizierte) Lösung könnte darin bestehen, den Varnish-Cache als Zwischencache in Ihrem LAN zu installieren , Internet Explorer so einzustellen, dass Varnish als HTTP-Proxy verwendet wird, und die VCL-Sprache auf Varnish zu verwenden, um die HTTP-Header nur für diese bestimmte Site neu zu schreiben.

Ehrlich gesagt denke ich, dass Ihr Verkäufer hier einen Fehler macht. Ich würde vorschlagen, Fiddler2 für IE oder Firebug für Firefox zu installieren und sich die tatsächlichen HTTP-Header anzusehen, die die Webanwendung sendet. Korrelieren Sie dies mit Mark Nottinghams Caching-Tutorial, auf das ich bereits oben verwiesen habe - ich vermute, die Header erlauben das Caching oder verbieten das Caching zumindest nicht ausdrücklich.

Jesper M.
quelle
0

Stellen Sie sicher, dass Sie die richtigen Ablauf-Header festgelegt haben. Wenn Sie die Zeit in die Vergangenheit verschieben, wird der Inhalt nicht zwischengespeichert. Überprüfen Sie die Uhrzeit / das Datum auf der Workstation, auf der IS9 ausgeführt wird. Siehe auch: http://www.mnot.net/cache_docs/

Mircea Vutcovici
quelle
0

Wenn Sie den Inhalt der betreffenden Website nicht ändern können, können Sie einen Proxyserver verwenden, um den Inhalt auf dem Weg zu Ihrem Browser zu ändern. Auf diese Weise können Sie die abgelaufenen Header ändern.

JeffG
quelle
0

Wenn Sie auf der Website eine Verbindung über HTTPS herstellen können, können Sie je nach Browser das Zwischenspeichern verschlüsselter Seiten deaktivieren.

Im IE kann dies folgendermaßen erfolgen:

Sie können die Einstellungen des IE unter Internetoptionen-> Erweitert-> Sicherheit-> Verschlüsselte Seiten nicht auf der Festplatte speichern überprüfen.

JeffG
quelle
Er bat um eine browserunabhängige Lösung.
Mircea Vutcovici
1
@Mircea Dieses IST ein Browser unabhängige Lösung. Ich habe gerade ein kostenloses Beispiel mit IE bereitgestellt. Viele andere Browser haben die Option, das Zwischenspeichern von SSL zu deaktivieren, aber die Einstellungen befinden sich an verschiedenen Stellen.
JeffG
0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Möglicherweise möchten Sie zufällige Schlüssel in der URL-Leiste verwenden. Dadurch wird auch das Zwischenspeichern im Browser verhindert.

Richard
quelle
Dies würde funktionieren, wenn GollyJer die Möglichkeit hätte, die Website zu ändern. Ich nehme an, er basiert nicht auf seiner Frage.
JeffG
Um genau zu sein, verhindern "zufällige Schlüssel" das Caching nicht effektiv. Der Browser und die Zwischencaches speichern die Antwort möglicherweise weiterhin auf der Festplatte. Wenn jedoch das nächste Mal dieselbe Datei angefordert wird, unterscheidet sich die URL durch den Zufallsschlüssel, sodass die zwischengespeicherte Version auf der Festplatte nicht verwendet wird. Eine neue Darstellung wird vom Server heruntergeladen und möglicherweise auf der Festplatte zwischengespeichert. Darüber hinaus ist das META PRAGMA-Tag alt und sollte nicht verwendet werden. Es wird empfohlen, HTTP Expires- und Cache-Control-Header zu verwenden.
Jesper M