Hello,
Wie kann ich dann dem Browser sagen, dass er die Seite aus dem Cache aufrufen soll / im Cache ablegen soll?
Das entscheidet er weitgehend selbständig. Dabei berücksichtigt er einerseits seine eigene Konfiguration, die dieses Verhalten in gewissen Grenzen beeinflusst, andererseits Empfehlungen, die der Server im HTTP-Header mitsendet. Normalerweise braucht man da nichts zu tun, wenn man nicht ganz spezielle und exotische Wünsche hat.
Man sollte den Browser darum bitten, was er beim nächsten Request auf diese Ressource mitsenden sollte. Anderenfalls tut er es nämlich oft nicht.
Nam sollte also die Header mitsenden:
header ("Last-Modified: $last_modified");
wobei sich $last_modiefied z.B. ergibt aus:
$last_modified = @gmdate('D, d M Y H:i:s',@filemtime(JSPATH.$filename)).' GMT';
Und dann sollte der Server oder dessen Resource Handler darauf achten, dass er die Hinweise des Client auch beachtet
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
(da gibt es noch mehr Möglichkeiten, wie das Element heißen kann, die sind mir aber im Moment entfallen...)
und anstelle der Ressource auch nur einen entsprechenden HTTP-Status zurücksendet, z.B.:
header("HTTP/1.0 304 Not Modified");
header("Cache-Control: max-age=86400, must-revalidate");
Dann weiß der Client, dass er seinen Cache benutzen darf.
Voraussetzung dafür ist natürlich immer, dass der Client vernünftige Einstellungen bezüglich der Cache-Nutzung hat. Wenn die auf "nur einmal im Jahr neu laden" steht, dann klappts nicht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg