Sie befinden sich hier:
» 
» 
16.12.2013

Valide GZIP Kompression für statische Webseiten

Kategorie(n): Performance, Web Scripte

In einem früheren Blogbeitrag (Performancegewinn durch Content-Komprimierung) beschrieb ich, wie man manuell Dateien (z.B. html, css, js, ...) komprimieren kann, falls der Webserver eine automatische Kompression nicht unterstützt. Ich empfahl 7-Zip oder IZArc. Vor kurzem wies mich ein Leser darauf hin, dass auf diese Art komprimierte Inhalte zwar korrekt ausgeliefert und vom Browser korrekt angezeigt werden, sie allerdings von verschiedenen Validatoren bemängelt werden.

http://www.gidnetwork.com/tools/gzip-test.php bringt z.B.: „Sorry, I am unable to decompress the contents of this page. Possible bogus gzip/deflate encoded data.” Der W3C Unicorn validator meldet „This response was compressed using GZip, but the data was corrupt.” Andere Validatoren, wie z.B. http://checkgzipcompression.com finden die Kompression in Ordnung.

Dies sorgt natürlich für Verunsicherung.

Obwohl für GZip einen Standard definiert ist, gibt es Unterschiede nicht nur bezüglich des Kompressionsgrades, sondern auch im Algorithmus generell. Sicherlich kann man nun darüber philosophieren, ob man Webseiten für Besucher / Browser erstellt oder um Validatoren zu befriedigen. Trotzdem hat es immer einen faden Beigeschmack, wenn Validatoren die Webseite bemängeln.

Valide Gzip-Kompression mit PHP

Doch was kann man tun? Ich habe verschiedene Kompressionsstufen und verschiedene Programme probiert (unter Windows). Die Probleme blieben bestehen. Ein Weg, der funktionierte, mit dem sowohl Browser als auch Validatoren zufrieden waren, ist die Gzip-Kompression mit PHP. Nun ist sicherlich nicht jeder Anwender ein Programmierer oder hat das nötige Know-how, um ein entsprechendes Programm zu schreiben. Es ist aber relativ einfach:

  • Verzeichnis auslesen
  • Dateien mit gewünschten Endungen berücksichtigen (z.B. html, htm, css, js)
  • Diese Dateien öffnen und gzip-komprimiert wieder abspeichern.
  • Dies möglichst rekursiv, damit man den Schritt nicht für jedes Unterverzeichnis wiederholen muss.

Ich habe die eben aufgelisteten Schritte in einer kleinen PHP-Klasse implementiert. Gern können Sie sich den Sourcecode herunterladen und in Ihrem Projekt verwenden. Beispiele bezüglich Parametrierung sind in der Klasse enthalten.

Es gibt natürlich auch Möglichkeiten, auf diversen Webseiten, wie z.B. auf http://floern.com/tools/codecompressor Dateien online zu komprimieren. Allerdings muss man hier jede Datei einzeln hoch laden, was für größere Websites recht aufwändig ist.

Autor: Mein Name ist Harry Kämpf und ich bin seit vielen Jahren als Projekt Manager im Webumfeld tätig. Auf diesen Erfahrungen basieren die Tipps zur Webseitengestaltung. Ich schreibe gern über Webthemen, nehme aktuelle Trends auf und gebe bei Bedarf kompetente Beratung. Mehr Infos können Sie auf ueber-mich.html nachlesen.

72

Kommentare:

05.Januar2014

also wir nutzen gzip in der htaccess. ist dies nicht mehr zeitgemäß? oder haben wir etwas verpasst?

05.Januar2014

Nein, nichts verpasst und die Lösung in der htaccess ist natürlich die erste Wahl. Dieser Lösungsansatz gilt (wie eingangs erwähnt), falls am Webserver eine automatische serverseitige Kompression nicht unterstützt wird.

12.Februar2014

Als passionierter Wordpress-User habe ich natürlich ein Plugin für die Komprimierung. Aber wenn doch mal ein manuelle Arbeit notwendig wird, habe ich ja hier eine gute Anleitung gefunden. Danke dafür!