01.05.2010 18:59:49

Köpfchen muss man haben...

Damit der Browser die Datei auch richtig interpretiert, muss man im HTTP-header ihm sagen, dass es sich um eine CSS-Datei handelt:

Code:header("Content-Type: text/css");

- und wenn wir schon dabei sind können wir auch gleich noch ein paar Header-Informationen senden:
  • Last-Modified
  • ETag - basierend auf Last-Modified
  • Cache-Control
  • und ein 304 wenn die Datei sich nicht geändert hat
Code: public function sendHeaders($dieOnNotModified = true){ header("Content-Type: text/css"); if ($this->lastModified){ header("Last-Modified: " . date("r", $this->lastModified)); header('ETag: "' . md5($this->lastModified) . '"'); if (array_key_exists("HTTP_IF_MODIFIED_SINCE", $_SERVER) && $this->lastModified <= strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])){ header($_SERVER["SERVER_PROTOCOL"] . " 304 Not Modified"); if ($dieOnNotModified) die(); } } header("Cache-Control: public"); }
[/absatz]

Ein kleines Wort in diesem Code ist besonders wichtig: "die" - denn ich habe festgestellt, dass mein FireFox (3.6.3) einen völligen Schwachsinn macht, wenn man einen 304-Status und danach noch Inhalt sendet. (Bei mir wurde der Content dann irgendwie in eine noch zu ladende .js-Datei geschrieben und hat dort natürlich gehörigen Ärger gemacht.)