Ich möchte einen minimalen Satz von Headern finden, die mit "allen" Caches und Browsern funktionieren (auch bei Verwendung von HTTPS !).
Auf meiner Website stehen drei Arten von Ressourcen zur Verfügung:
(1) Für immer zwischenspeicherbar (öffentlich / für alle Benutzer gleich)
Beispiel: 0A470E87CC58EE133616F402B5DDFE1C.cache.html ( automatisch von GWT generiert )
Diesen Dateien wird automatisch ein neuer Name zugewiesen, wenn sie den Inhalt ändern (basierend auf dem MD5).
Sie sollten so weit wie möglich zwischengespeichert werden, auch wenn HTTPS verwendet wird (also nehme ich an, ich sollte festlegen
Cache-Control: public
, insbesondere für Firefox?)Sie sollten nicht verlangen, dass der Client einen Roundtrip zum Server durchführt, um zu überprüfen, ob sich der Inhalt geändert hat.
(2) Gelegentliche Änderungen (öffentlich / gleich für alle Benutzer)
Beispiele: index.html, mymodule.nocache.js
Diese Dateien ändern ihren Inhalt, ohne die URL zu ändern, wenn eine neue Version der Site bereitgestellt wird.
Sie können zwischengespeichert werden, benötigen jedoch wahrscheinlich eine Hin- und Rückfahrt, um jedes Mal erneut validiert zu werden.
(3) Individuell für jede Anfrage (privat / benutzerspezifisch)
Beispiel: JSON-Antworten
- Diese Ressourcen sollten unter keinen Umständen unverschlüsselt auf der Festplatte zwischengespeichert werden. (Außer vielleicht habe ich ein paar spezifische Anfragen, die zwischengespeichert werden könnten.)
Ich habe eine allgemeine Vorstellung davon, welche Header ich wahrscheinlich für jeden Typ verwenden würde, aber es gibt immer etwas, das mir fehlen könnte.
quelle
Antworten:
Ich würde wahrscheinlich diese Einstellungen verwenden:
Cache-Control: max-age=31556926
- Darstellungen können von jedem Cache zwischengespeichert werden. Die zwischengespeicherte Darstellung gilt für 1 Jahr als frisch:Cache-Control: no-cache
- Repräsentationen dürfen von jedem Cache zwischengespeichert werden. Caches müssen die Anforderung jedoch zur Validierung an den Ursprungsserver senden, bevor eine zwischengespeicherte Kopie freigegeben wird.Cache-Control: no-store
- Caches dürfen die Darstellung unter keinen Umständen zwischenspeichern.Siehe Mark Nottingham Caching Tutorial für weitere Informationen.
quelle
Die Fälle eins und zwei sind tatsächlich dasselbe Szenario. Sie sollten
Cache-Control: public
eine URL mit der Build-Nummer / Version der Site festlegen und anschließend generieren, damit Sie über unveränderliche Ressourcen verfügen, die möglicherweise für immer Bestand haben können. Sie möchten denExpires
Header auch in Zukunft ein Jahr oder länger festlegen, damit der Client keine Frischeprüfung durchführen muss.Für Fall 3 können Sie für maximale Flexibilität Folgendes tun:
quelle
https://www.example.com/
c) Ich möchte, dass Lesezeichen immer auf die neueste Version meiner Site verweisen (stellen Sie sich vor, die Lesezeichen für eine Stackoverflow-Frage würden die Build-Nummer der Site enthalten).