Mailinglisten-Archive |
Hallo zusammen, also CSS dynamisch per PHP zu erzeugen habe ich vor langer Zeit einmal bei mir eingesetzt - und es recht bald wieder abgeschaltet. Wenn man in dem CSS-Script (also das PHP Script welches das CSS ausspuckt) nicht darauf achtet sauberer Header (inc. Modified, Cache Instructions etc.) zu senden dann holt der Browser bei jedem Seitenabruf in dem das CSS eingebunden ist dieses neu vom Server mit der damit verbundenen Generierungsarbeit des CSS. In dem Fall könnte man das CSS direkt in die HTML Seite generieren - das wäre dann sogar schlanker denn es käme mit einem Request aus, statt im anderen Fall mit zwei. Außerdem scheinen manche Browser-Caches "allergisch" auf "?" in URLs zu reagieren. Dann werden diese Files mal prinzipiell nicht gecacht. Egal was der Header sagt. Daher habe ich recht schnell zu einer anderen Technik gewechselt: Ich erzeuge "statische" CSS Files im Filesystem "on demand" und binde diese dann wie gewohnt im HTML ein. Dazu erzeuge ich den Stylesheet Link per PHP in der HTML Datei, statt: <link rel="sytlsheet" type="text/css" href="/style.php?ID=5&lk=3&sid=45687128" /> verwende ich also z.B.: <link rel="sytlsheet" type="text/css" href="<?php echo GetStyleURL(5,3,45687128); ?>" /> Die Funktion "GetStyleURL" nimmt die Parameter entgegen, schaut intern in einem Repository nach ob für diese Parameterkonfiguration schon ein Datei existiert und erzeugt diese falls sie nicht existiert. Ergebnis der Funktion ist die resultierende URL: <link rel="sytlsheet" type="text/css" href="/style/000000001.css" /> Das ist dann für den Browser etwas ganz normales und vor allem auch cachebar. Der Indianer liefert das File nur noch aus anstatt es öffters neu zu berechnen. Die Verwaltung der erzeugten Files ist jetzt anwendungsabhängig. D.h. man kann sie nach gewisser Zeit löschen o.ä. Wird eine Datei wieder benötigt dann erzeugt sie o.g. Funktion ja sowieso wieder - aber eben nur ein mal :-) Gruß, Andreas
php::bar PHP Wiki - Listenarchive