PHP inlcude und Cache

Kommentieren May 21 2007

 

PHP erstellt einen Cache von einer Include Datei.
Dies ist kein Bug, sondern soll anscheinend auch so sein.

Nun hatte ich aber den Fall, dass sich diese include Datei geändert hat, aber ein alter Wert nach dem include ausgegeben worden ist, obwohl ein neuer in der inlcude Datei gesetzt war.

Wenn der Inhalt so einer include Datei dynamisch geändert werden kann, zb. über ein Frontend mit dem man die Variablen bestimmen kann die in so einer inlcude Datei stehen, und diese Datei später eingebunden wird, kann es nun vorkommen, dass alte Werte angezeigt und verwendet werden.

Lässt man das Ganze durch einen Debugger (Zend Debugger) laufen, dann wird dieses Problem nicht auftreten. Auch das Leeren des Browsercaches wird nichts bringen.

Ein Weg um das zu umgehen ist wie folgt:

// HTTP/1.1

header("Cache-Control: no-cache, must-revalidate"); 

// Datum in der Vergangenheit

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");



Damit wird gesagt, dass der Cache in der Vergangenheit abläuft, und somit immer wieder neu geladen wird.