phpbar.de logo

Mailinglisten-Archive

AW: [php] CSS & PHP

AW: [php] CSS & PHP

Andreas Müller php at universalware.de
Fre Mar 19 14:22:31 CET 2004


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