Hallo!
Ich bin gerade dabei, ein Script zu schreiben, welches das Caching meiner Seite steuern soll. Ich gehe folgendermaßen vor:
1.) Prüfe, ob der If-Modified-Since-Header im Request gesetzt ist. Wenn ja, dann vergleiche ihn mit dem letzten Änderungsdatum der Datei, gebe bei Übereinstimmung den "HTTP/1.1 304 Not Modified"-Header aus und breche die Scriptbearbeitung ab.
2.) Wenn nicht abgebrochen wurde, dann werden nun vor Ausgabe der Seite folgende Header gesetzt:
Expires: heute+60 Tage
Cache-Control: public, max-age=60 Tage, must-revalidate
Last-Modified: Datum der letzten Änderung
3.) Ausgabe des Scriptes
Soweit so gut.. Mein Problem liegt nicht in der PHP-Implemetierung sondern im Grundsätzlichen Verständnis zum Caching. Eigentlich möchte ich folgendes erreichen: Der Client soll immer eine Anfrage zum Server schicken und nur bei 304-Header auf den Browsercache zurückgreifen. Momentan scheint er aber innerhalb der 60 Tage nie eine Anfrage an den Server zu schicken, sondern immer auf den Browsercache zurück zu greifen. Gilt das must-revalidate nicht für Browser-Caches? Wenn ich Expires in die Vergangenheit setze und max-age auf null, dann wird ja aber gar nicht gecached und somit wäre auf der 304-Header überflüssig.
Ich hoffe, ihr versteht, wo mein Verständnisproblem liegt und habt nen kleinen Tipp parat
..
Vielen Dank schonmal für jede Hilfe!!
Ich bin gerade dabei, ein Script zu schreiben, welches das Caching meiner Seite steuern soll. Ich gehe folgendermaßen vor:
1.) Prüfe, ob der If-Modified-Since-Header im Request gesetzt ist. Wenn ja, dann vergleiche ihn mit dem letzten Änderungsdatum der Datei, gebe bei Übereinstimmung den "HTTP/1.1 304 Not Modified"-Header aus und breche die Scriptbearbeitung ab.
2.) Wenn nicht abgebrochen wurde, dann werden nun vor Ausgabe der Seite folgende Header gesetzt:
Expires: heute+60 Tage
Cache-Control: public, max-age=60 Tage, must-revalidate
Last-Modified: Datum der letzten Änderung
3.) Ausgabe des Scriptes
Soweit so gut.. Mein Problem liegt nicht in der PHP-Implemetierung sondern im Grundsätzlichen Verständnis zum Caching. Eigentlich möchte ich folgendes erreichen: Der Client soll immer eine Anfrage zum Server schicken und nur bei 304-Header auf den Browsercache zurückgreifen. Momentan scheint er aber innerhalb der 60 Tage nie eine Anfrage an den Server zu schicken, sondern immer auf den Browsercache zurück zu greifen. Gilt das must-revalidate nicht für Browser-Caches? Wenn ich Expires in die Vergangenheit setze und max-age auf null, dann wird ja aber gar nicht gecached und somit wäre auf der 304-Header überflüssig.
Ich hoffe, ihr versteht, wo mein Verständnisproblem liegt und habt nen kleinen Tipp parat

Vielen Dank schonmal für jede Hilfe!!
Kommentar