Ich kratzte mir ein bisschen am Kopf. Eine von mir ausgeführte Drupal-Site legt geeignete Cache-Header fest, die angeben sollen, dass die Seite 15 Minuten lang zwischengespeichert werden kann. Jedes Mal, wenn ich auf die Seite klicke, wird eine GET-Anfrage gesendet, anstatt die Seite aus dem Cache zu laden.
Ich aktualisiere die Seite nicht jedes Mal mit Gewalt, was dem Browser anzeigt, dass ich die Caches leeren möchte. Ich habe kein Cache-Busting im Entwicklermodus aktiviert.
Ist dies nur das Standardverhalten von Browsern oder fehlt mir etwas Offensichtliches? Hier sind die Anforderungs- / Antwort-Header, die von den FireFox-Entwicklungstools auf meine Homepage gelangen:
HINWEIS / BEARBEITEN : Einige Leute haben vorgeschlagen, dass dies mit dem Expires
Header in der Vergangenheit zusammenhängt. Allerdings Cache-Control
überschreibt alles in Expires
wie beschrieben in RFC 2616 , Abschnitt 14.9.3. Drupal enthält dies, um das Caching auf älteren HTTP 1.0-Clients zu deaktivieren, die den erweiterten Vary
Header nicht unterstützen, den Drupal für das ordnungsgemäße Caching benötigt.
In CMS-Programmen erfordern einige Seiten eine Interaktion mit der Datenbank, um den dynamischen Inhalt anzuzeigen, der für die Benutzeranforderung spezifisch ist. Die gesamte Seite kann nicht zwischengespeichert werden oder zeigt dem Benutzer nicht den richtigen Inhalt.
Ein Beispiel hierfür ist in der Praxis eine E-Commerce-Warenkorb- / Checkout-Seite. Da die Seite jedes Mal anders aussieht, gibt es keine Möglichkeit, sie vollständig zwischenzuspeichern. Ohne mehr über die spezifische Seite zu wissen, ist es schwierig zu wissen, ob die Seite, auf die Sie verweisen, eine Datenbankbeteiligung erfordert.
quelle
Zusätzlich zu den anderen Antworten befindet sich der
Expires
Header in der Vergangenheit. Dies ist auch ein Grund, warum Browser die Seite nicht zwischenspeichern.quelle
Cache-Control
Header vorhanden ist. Es überschreibt denExpires
Header für HTTP 1.1-Clients. Siehe ietf.org/rfc/rfc2616.txt , Abschnitt 14.9.3.