Ich habe über einige Tutorials wie Gzip eine CSS-Datei, in der Sie eine öffentliche PHP-Datei, um CSS-Dateien mit Komprimierung zu erstellen. Das Problem ist, ich kann es nicht bekommen, um meine CSS-Dateien zwischenzuspeichern. Ich benutze Firebug als Referenz und ich habe tatsächlich versucht, den gleichen Code zu verwenden, um etwas Javascript zu komprimieren, und es speichert es gut. HierCaching gzipped css
ist der Code:
if(extension_loaded('zlib')){ ob_start('ob_gzhandler'); } $offset = 60 * 60 * 24 * 31; header('Content-type: text/css'); header ('Cache-Control: max-age=' . $offset . ', must-revalidate'); header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT'); ob_start("compress"); function compress($buffer) { // Remove Comments, White Space, End ;'s $buffer = preg_replace('#/\*.*?\*/#s', '', $buffer); $buffer = preg_replace('/\s*([{}|:;,])\s+/', '$1', $buffer); $buffer = preg_replace('/\s\s+(.*)/', '$1', $buffer); $buffer = str_replace(';}', '}', $buffer); $buffer = str_replace(' {', '{', $buffer); return $buffer; } include('global.css'); if(extension_loaded('zlib')){ ob_end_flush(); }
Dann bin ich einfach meine PHP-Datei als CSS-Dokument auf anderen Seiten verweisen. Wie Sie sehen können, habe ich versucht, das Alter zu addieren, was sich ebenfalls als nicht erfolgreich erweist.
Hier ist der Response-Header
Date Tue, 21 Jul 2009 19:59:19 GMT Server Apache/1.3.41 (Darwin) PHP/4.4.9 X-Powered-By PHP/4.4.9 Cache-Control max-age=2592000, must-revalidate Expires Thu, 20 Aug 2009 19:59:19 GMT Content-Encoding gzip Vary Accept-Encoding Keep-Alive timeout=15, max=93 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/css
Gibt es etwas, ich bin fehle, oder ein besserer Weg, um dies zu tun gehen?
Danke,
EDIT:
Ein Skript, das, ob die Datei eine 304 & erkennt das Senden geändert wurde, wenn es in Kombination mit der richtigen Header dieses Problem gelöst hat nicht hat.
Arthur
Hey Anthony, Ich habe versucht, Last-Modified wie Sie vorgeschlagen mit der Kombination aus einem späteren und früheren Modifikationsdatum ohne Glück. Ich habe auch Header mit einem ETag & Wenn geändert seit, und es ist immer noch nicht im Cache ... Vielen Dank für Ihre Antwort, ich werde all dies für zukünftige Referenzen und Debugging berücksichtigen. – askon
@askon: Das waren nicht die kritischen Faktoren, das Hauptproblem ist die Einbeziehung der must-revalidate-Direktive in den Cache-Control-Header. Damit wird die CSS immer wieder abgerufen. Verwenden Sie in Ihrem Test auch Seitenaktualisierung (F5)? Das wird nichts beweisen, Ressourcen wie css werden unter einem Aktualisierungskontext referenziert und ohne einen 304-Mechanismus in Ihren Code eingebaut, der zu einem vollständigen Abruf der Ressource führen wird. – AnthonyWJones
Entschuldigung, ich hätte etwas genauer sein sollen. Ich habe die Linie wieder Validate entfernen müssen, hier ist meine Kopf Antwort: http://freetexthost.com/zqbddbchvz Was ich nicht verstehe ist, kann ich genau das gleiche Skript versuchen, außer auf einem text/javascript Dokument und es zeigt eine 200 & Caches es. – askon