Holger wrote:Bei dynamischen Seiten ist es komplizierter: hier speichere ich einen Hash, der aus dem Inhalt generiert wird. Den sende ich dann als E-Tag. Bei der nächsten Anfrage schickt der Client das E-Tag mit, was dann serverseitig verglichen wird. Stimmt es überein, wird nur ein 304 not modified - Header geschickt und der Browser nimmt die Seite aus seinem Cache. Wenn nicht, wird die Seite dann komplett gesendet.
Ginge das in etwa so?
Käme man damit weiter?
In der stylesheet.css.php ganz oben ...
Code: Select all
<?php
header("Content-type: text/css");
function set_eTagHeaders($file, $timestamp) {
$gmt_mTime = gmdate('r', $timestamp);
header('Cache-Control: public');
header('ETag: "' . md5($timestamp . $file) . '"');
header('Last-Modified: ' . $gmt_mTime);
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if ($_SERVER['HTTP_IF_MODIFIED_SINCE'] == $gmt_mtime || str_replace('"', '', stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])) == md5($timestamp . $file)) {
header('HTTP/1.1 304 Not Modified');
exit();
}
}
}
set_eTagHeaders(__FILE__, filemtime(__FILE__));
...
Damit taucht aber in meiner Konsole die stylesheet.css.php zweimal auf.
Beide Male mit "Aus Cache" und grau - keine Ladezeiten.
Aber eine davon mit Status 200, die andere mit 304.
Änderungen werden erst nach Cache(History)-leeren sichtbar. (nicht nach Reload)
Auch der ETag ist bei beiden gleich.
Beinahe vergessen:
Der Code stammt von
http://blog.franky.ws/php-und-das-cachi ... ader-etag/
Dieser Franky bin aber nicht ich
Nachtrag:
Oh Mann, bin ich blöd.
So klappt zwar das Caching - aber die Änderung der config.php kriegt das Script ja gar nicht mit