cache-Header für dynamische css (erzeugt mittels PHP)
Meine CSS-Datei ist eigentlich eine PHP-Datei, das serviert wird mit content-type text/css
so dass ich verwenden können PHP-Variablen in dieser Datei. style.php
sieht wie folgt aus:
<?php
header('Content-Type: text/css');
$bgColor = '#000';
?>
body { background:<?php print $bgColor; ?>; }
Funktioniert es wie erwartet, aber ich bin ein bisschen besorgt, wenn der browser eine Zwischenspeicherung der dynamisch erzeugten css-Datei.
Beim Blick auf die Anforderungen in firebug, es scheint mir, dass der browser geladen wird style.php
neu jedes mal wenn ich die Seite neu laden.
Ich habe bereits versucht die cache-Header:
header('Cache-control: must-revalidate');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 60 * 60 * 24) . ' GMT');
Aber kein Glück. Die Datei wird noch geladen, jedes mal wenn die Seite geladen wird. Was sind die entsprechenden überschriften, um zu zwingen, den browser-cache, um die Datei für eine gewisse Zeit?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, dass eine Datei zwischengespeichert werden, von den Browsern, sollten Sie den Cache-control-Kopfzeile zu einer öffentlichen:
must-revalidate bedeutet, dass der browser überprüft, um zu sehen, ob die Datei aktualisiert wurde, die aufrufen, Ihre PHP-Skript.
Dieser code löst Ihr problem.
Prüft es die "zuletzt geändert" - variable, und weisen Sie einen eTag-Angabe für die Datei.
Wenn die eTag geändert wird (oder die Datei geändert wird), wird die Datei angezeigt. Ansonsten gibt es eine 304 die HTTP-Fehlermeldung, die besagt, dass die Seite nicht verändert wurde.
ETag ist eigentlich das, was du bist suchen für.
Code: