Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

CSS Gzip Browserunterstützung

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
marc77
PostRank 8
PostRank 8
Beiträge: 849
Registriert: 22.05.2007, 21:41

Beitrag von marc77 » 07.04.2010, 10:07

Hallo,

bin gerade bei meine css files zu komprimieren. Ich kenne eigentlich alle methoden (mod_deflate, htaccess, direkt in die css und in php umbenennen usw.).

Ich habe mich trotzallem für die einfachste aber für mich effektivste Methode entschieden. Ich schreibe einfach

Code: Alles auswählen

if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
header('Content-type: text/css');
ob_start("ob_gzhandler");
in die css datei ganz oben und benenne Sie in php um.

Frage: Ist die Browserunterstützung bei allen Browsern aufgrund der Umbenennung trotzdem gegeben? ich möchte eigentlich ungern auf das Caching durch den Browser verzichten auch wenn ich durch die komprimierung einiges einspare sollte die datei nicht dauerhaft ausgeliefert werden nur weil Sie jetzt php und nicht css heisst.
Ich denke durch
header('Content-type: text/css');
sagt man dem browser das es eine css datei ist und er behandelt die php datei dann wie eine css aber ich bin mir nicht sicher.

danke für eine Rückmeldung!

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Synonym
PostRank 10
PostRank 10
Beiträge: 3708
Registriert: 09.08.2008, 02:55

Beitrag von Synonym » 07.04.2010, 10:47

Also das ist wohl eher ein Thema für Mork, aber so würde ich das jedenfalls nicht machen. Habe nur schlechte Erfahrungen mit dynamischen CSS-Files, bzw. CSS-Files, die PHP-Scripte sind.

Ich überlasse das dem Apache immer direkt per mod_deflate und das File bleibt eine .css. So weit ich weiß geht das Komprimieren so zwar schon, aber dank der .php geht das Caching verloren.

Kann mich da aber auch irren :wink:

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 07.04.2010, 10:47

marc77 hat geschrieben:

Code: Alles auswählen

if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) {
header('Content-type: text/css');
ob_start("ob_gzhandler");
in die css datei ganz oben und benenne Sie in php um.

Frage: Ist die Browserunterstützung bei allen Browsern aufgrund der Umbenennung trotzdem gegeben?
Eine (vermeintliche) Dateiendung ist und war nie von Bedeutung für die Behandlung des Inhalts durch Browser. Was zählt, ist einzig das, was im Kopf der HTTP-Antwort steht.
Ich denke durch
header('Content-type: text/css');
sagt man dem browser das es eine css datei ist und er behandelt die php-datei
Beim Browser kommt kein PHP an. PHP ist eine serverseitige Sprache, ein PHP-Skript wird vom Webserver bzw. dem PHP-Interpreter auf dem Server verarbeitet und nur das, was das Skript ausgibt, wird an den Browser gesendet.
ich möchte eigentlich ungern auf das Caching durch den Browser verzichten
Effektives Caching hast du alleine dadurch abgewürgt, dass dein Skript den bei jedem Webserver von Haus aus für statische Dateien wunderbar funktionierenden Mechanismus der bedingten HTTP-Anfragen nicht unterstützt. Anders gesagt: Du hast die Situation verschlimmbessert, statt nichts sendest du jetzt komprimierte Daten.

Objekte, denen kein Verfallsdatum mitgegeben wurde, werden grundsätzlich bei jeder Verwendung vom Browser neu beim Server angefragt, ausdrücklich auch, wenn der Browser das Objekt schon im Cache hat. Er macht dann allerdings eine bedingte Abfrage, d.h. er fragt nach, ob sich das Objekt seit seiner letzten Anfrage geändert hat. Ist dem so, antwortet der Server nur mit einem knappen "Nicht geändert", anstatt den ganzen Kram nochmals zu schicken.
Diesen Mechanismus unterstützt dein Skript nicht – und bevor du auf die Idee kommst: Es ist Unsinn, sowas einzubauen, weil dein Webserver das ganz alleine kann, du musst eigentlich nur nichts tun.

- Lege statische Daten grundsätzlich als statische Datei ab. Der Webserver übernimmt die Behandlung bedingter Anfragen ohne weiteres Zutun komplett.
- Für Daten, die sich eher nicht bei jedem Aufruf ändern, sende ein Verfallsdatum (zB mittels ExpiresByType), und sei es mit einem Verfall in wenigen Stunden. Alleine damit vermeidest du haufenweise wiederholte Anfragen, einschließlich bedingter.
- Ist mod_deflate o.ä. vorhanden, aktiviere es.
- Ist mod_deflate nicht vorhanden oder hast du Dateien, die sich sehr selten ändern, komprimiere die Datei von Hand mittels gzip. Benenne das Original in beispiel.css.css (doppelte Endung!) um und die komprimierte Fassung in beispiel.css.gz, belasse Verweise auf diese Datei aber beim alten beispiel.css (einfache Endung!); dann füge die Zeile Options +multiviews in eine zuständige .htaccess ein. Der Apache sucht sich bei dieser Konstellation die zur Anfrage passende Datei selbständig.