CSS-Datei via PHP optimieren

ricounltd

Mitglied
Hallo,
also ich bin gerade dabei meine Website zu optimieren. Bis jetzt habe ich es immer so gemacht, das meine CSS-Datei "on the fly" komprimiert wird. Der folgende Code steht in meiner PHP-Datei:

Code:
<?php
	header('Content-type: text/css');
	header('Last Modified: '.gmdate('D, d M Y H:i:s',time().'GMT'));
	
	ob_start('compress');
	
	function compress($buffer) {
		$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '',$buffer);
		$buffer = str_replace(array("\r\n","\r","\n","\t",'  ','    ','    '),'',$buffer);
		return $buffer;
	}
	
	include('stylesheet.css');

	ob_end_flush();
?>

So, nun habe ich aber das Problem, dass mir "PageSpeed" sagt, ich müsste einen Cache-Validierer angeben. Das mache ich ja indem ich den "Last Modified"-Header sende, aber irgendwie akzeptiert er mir das nicht. Kann mir jemand sagen warum oder hat vielleicht einer eine bessere Idee diesbezüglich?

Ich bedanke mich schonmal im voraus für hilfreiche Antworten.

Mit besten Grüßen,
Rico
 
Ich habe einen Vorschlag: Da du die CSS anscheinend aus einer "sonstigen" Quelle (DB bspw.) zu beziehen scheinst: Bei Änderungen schreibe die Daten in eine statische Datei statt einer DB. Dann kümmert sich dein Apache automatisch darum.

EDIT: Natürlich gehe ich dann davon aus, das du gzip-Kompression dann ebenfalls über den Apache regeln lässt (z.B. mittels htaccess).
 
Da muss ich dich leider enttäuschen mein Lieber ;)
Die CSS-Datei beziehe ich nicht aus einer Datenbank. Das PHP-Script liegt im CSS-Verzeichnis (in welchem sich auch mein Stylesheet befindet). Statt die CSS-Datei im Header einzubinden, binde ich das Script ein, welches mir die CSS-Datei optimiert ausgibt.

Das ist jetzt zwar nicht die elegante Lösung, aber immerhin.
 
Dennoch kannst Du den optimierten CSS-Output cachen und nach Belieben aktualisieren. Siehe auch
http://www.tutorials.de/php/384173-...-erstellen-und-datei-immer-aktualisieren.html
In jenes Snippet müsste doch nur noch eine Abfrage, wie alt die Datei ist, und danach entscheidest Du, ob die Datei direkt ausgegeben oder neu erstellt und dann ausgegeben wird.

mfg chmee

Nachtrag: Wo siehst Du eigentlich den Vorteil, die CSS über einen Puffer zu komprimieren und auszugeben? Dann kannst Du sie auch simpel einlesen, komprimieren und ausgeben - oder stets nach dem Neuerstellen einmalig komprimieren und statisch bereitstellen. Kein Unterschied.
 
Zuletzt bearbeitet:
Das PHP-Script liegt im CSS-Verzeichnis (in welchem sich auch mein Stylesheet befindet). Statt die CSS-Datei im Header einzubinden, binde ich das Script ein, welches mir die CSS-Datei optimiert ausgibt.

Das ist jetzt zwar nicht die elegante Lösung, aber immerhin.

Und was genau bezweckst du damit? Was kannst du damit machen, was du mit dem reinen Style-Sheet nicht kannst?

Wie ich bereits schrieb, kann der Apache das von Haus aus. Sowohl komprimieren (besser als deine Methode) als auch Last-Modified korrekt senden.
 
Naja ich versuche eben meine CSS-Datei so klein wie möglich zu halten. Das Script entfernt eben alle Zeilenumbrüche, Whitespaces und Kommentare aus dem Code, so dass die CSS-Datei nur noch aus einer Zeile besteht.

Ja gibt es denn eine andere Möglichkeit? Ich bin mit Apache nicht so bewandert.
 
Mach das doch vor dem Deployment/Hochladen der CSS Datei. Es gibt keinen Grund, das immer und immer wieder zu machen.

Wie bereits erwähnt, wird dir gzip viel mehr bringen und du musst dich um nichts kümmern.
 
Danke an alle, hab das mitlerweile gelöst mit GZIP, PHP, Anweisungen in der .htaccess usw. nur ich bekomm leider den "Keep-Alive aktivieren" nicht raus - naja was sollst, danke nochmal an alle.
 
Zurück