Wie verhindere ich, dass Chrome die Cache-Steuerung sendet: max-age = 0, wenn ich die Eingabetaste drücke?

27

Ich habe eine etwas unsichere Verbindung und versuche, mein Surferlebnis mithilfe eines lokalen Proxys zu verbessern. Laut meinen Recherchen wird jedoch, wenn ich bei einer vorhandenen URL in meinem Browser die Eingabetaste drücke, ein Cache-Control: max-age=0Header an den Proxy gesendet, der wiederum Roundtrips zum Server durchführt, um den Inhalt erneut zu validieren.

Das möchte ich nicht besonders. Wenn das Objekt veraltet ist, ruft der Cache es erneut ab, aber wenn es nicht veraltet ist, verstehe ich nicht, warum das Objekt jedes Mal neu validiert werden soll. Wenn ich vermute, dass die Seite alt ist, habe ich Shift-F5 und ich habe keine Angst, sie zu verwenden.

Gibt es also irgendwo hinter den Kulissen in Chrome ein Tunable, das dieses nervige Verhalten ausschaltet?

womble
quelle

Antworten:

25

Ich habe festgestellt, dass Chrome, wenn Sie über die Schaltfläche "Zurück" oder einen Link zu einer Seite navigieren, nicht den Header "max-age = 0" sendet und in der Regel (wenn der Apache-Server auf der anderen Seite für das Caching konfiguriert ist) a verwendet zwischengespeicherte Version der Seite.

Wenn Sie jedoch die URL (z. B. www.example.com/abcd/index.html) direkt in die Adressleiste eingeben und dann auf drücken Return, sendet Chrome immer den Cache-Control: max-age=0Header, der die Zwischenspeicherung umgeht.

Svenny
quelle
5

Es ist möglich, die von Chrome an einen Webserver gesendeten Header mithilfe von Benutzerskripten (ala greasemonkey) oder Erweiterungen zu ändern. Hier ist eine Erweiterung, die funktionieren sollte: ModHeader

Entsprechend der Einführung und dem Screenshot sollte das Hinzufügen eines Headers cache-control max-age=1000relativ einfach sein. Es werden auch Domänen-Whitelists unterstützt, um zu verhindern, dass Header an bestimmte Websites gesendet werden. Möglicherweise müssen Sie bestimmte Experimente in chrome: // flags für diese Arbeit aktivieren.

Demo zum Hinzufügen von Headern

Jeremy W
quelle
1

Browser verhalten sich basierend auf den empfangenen Antwort-Headern. Erhält der Browser Antwort-Header wie

Cache-Control: private
Expires: Thu, 01 Jan 1970 00:00:00 UTC

dann würde der Browser immer mit anfordern Cache-Control: max-age=0. Dies ist normalerweise bei Tomcat-Containern BaseAuthenticatorder disableProxyCachingFall , bei denen diese Antwortheader hinzugefügt werden, wenn die Variable true ist. Wenn Sie mit einem ähnlichen Problem konfrontiert sind, können Sie diesen Link zur Lösung besuchen .

Hoffe das hilft bis zu einem gewissen Grad :)

Sunil Dabburi
quelle