Cachen unterbinden funktioniert nicht

Sven Petruschke

Erfahrenes Mitglied
Hallo,

mit folgendem Code versuche ich das Cachen der PHP-generierten Seiten im Browser zu unterbinden:
PHP:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
Leider klappt das nicht. Nehme ich Änderungen an meinen Scripten vor und möchte diese im Browser testen, dann wird mir solange die alte Version der Seite angezeigt, bis ich den Browsercache leere. Ausprobiert habe ich das Ganze mit dem IE 6 und dem Firefox 0.9 auf meinem lokalen Testserver, als auch beim Provider.

Hatte schon einmal jemand das gleiche Problem und kann mir aus der Klemme helfen?

mfg, snuu
 
Ich hatte auch häufiger Probleme, allerdings habe ich keine Lösung gefunden. Bzw. ich kann den damaligen Fehler nicht mehr rekonstruieren.
Aber der 26. Juli 1997 war ein Samstag.
 
Ändere bzw. ergänze folgende Zeilen:
PHP:
<?php
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Pragma: no-cache");
?>

Damit sollte es gehen.

Weitere Infos zu HTTP 1.1 findest du hier http://www.w3.org/Protocols/rfc2616/rfc2616

Noch was vergessen :). Wenn es dann immer noch nicht funktioniert, prüfe mal deine Einstellung in deinem Browser.
 
Danke für die Hilfestellung, allerdings allein damit funktioniert es bei mir nicht.

Zur Erklärung: Ich verwende ein modulares System, das immer über die selbe Datei aufgerufen wird und anschließend die benötigten Module zur Darstellung der angeforderten Seite einbindet. Wenn ich nun an den Moduldateien etwas ändere oder den Datenbankinhalt modifiziere, der auf den einzelnen Seiten dargestellt werden soll, muss ich wie gesagt immer die Seite neu laden und dabei den Browsercache für diese Seite löschen (Tastenkombination Strg+Shift+R im Firefox oder Strg+Reload-Button im IE).

Der Header allein behebt das Problem nicht. Allerdings habe ich festgestellt, dass die Seite nicht aus dem Cache geholt wird, wenn die besagte Einstiegsseite geändert wurde. Somit sende ich nun die Header und änder das Änderungsdatum meiner Basis-Datei auf die aktuelle Zeit. Damit klappt es.

PHP:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT");
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
touch('index.php');

Das liegt vielleicht an irgendeiner Konfigurationseinstellung des Servers oder Browsers, obwohl ich wie gesagt mit zwei verschiedenen Browsern und Servern getestet habe. Aber vielleicht hat jemand noch einen Erklärungsversuch, warum es durch die Header allein nicht funktioniert.

Vielen Dank bis dahin,

snuu
 
Zurück