Serverseitige Komprimierung

Tja, wer es noch nicht weiß, Seiten lassen sich auf dem Server mit gzip komprimieren, und der Browser entpackt diese dann automatisch. Soweit zumindest die Theorie, die Praxis läuft da leider etwas anders ab. Ich bin auf dieses Thema durch einen interessanten Blog-Beitrag auf phpperformance.de gekommen.

Leider wird das Ganze auf den Servern in der Regel mit so einer Art „Fire and Forget“-Mentalität betrieben, denn irgendwie hat man den Eindruck, dass man nicht so ganz weiß, was man da tut. Insofern ist auch der gute Blog-Beitrag wichtig, denn es reicht nicht, mal eben das automatische Encoding einzuschalten. Das Ganze muss auch konfiguriert werden! Ich brauche zum Beispiel keine jpeg’s zu komprimieren – das sind die schon!

Mit mod_gzip habe ich mir regelmäßig erhebliche Probleme eingefangen, sei es mit einem Internet Explorer der das mit dem Decodieren nicht so Ernst genommen hat, oder Proxies, die dem Ganzen auch nicht zuträglich waren. Außerdem gibt es das Ganze nur für Apache 1 – ist also nicht mehr so ganz State of the Art.

Mod_Deflate läuft dafür in der Regel sauber, aber auch da habe ich Ausnahmen gefunden. Vor allem dann, wenn Flash Content nachlädt, der mit PHP erzeugt wird. Hier habe ich mir angewöhnt, im Header stets die Content-Length mitzusenden, dann lief es meistens sauber.

Aber die Tücke steckt oft im Detail: Wenn man das Komprimieren von Bild-Daten global ausschaltet, für PHP global einschaltet, hat man ein Problem! Dies fällt allerdings erst auf dem zweiten Blick auf. Zum Beispiel könnte es ein PHP-Skript geben, das automatisch Thumbnails erzeugt. Für den Server ist und bleibt es ein PHP-Skript, das Content-Encoding wird ggf. eingeschaltet. Dies wäre in diesem Fall genauso unnütz wie kontra-produktiv, da die Bilddaten ja schon komprimiert sind. In dem Fall komprimiere ich doppelt.

Man muss also genau aufpassen, wo man Content-Encoding wie einsetzt. Es global und ohne Rücksicht auf Verluste einzusetzen, ist meist die verkehrte Lösung. Stattdessen sollte man PHP generell NICHT in die automatische Komprimierung aufnehmen, und selektiv das Output Buffering verwenden.

Ähnliche Beiträge

Tutorial Amazon Web Services mit PHP – I ... Die Amazon Web Services sind recht nett, wenn man einfach und schnell Content auf seine eigenen Seiten bringen möchte. Dabei geht es noch nicht einmal...
Remote Debugging mit PhpStorm und Xdebug Ich habe hier im Moment eine ziemlich komische, historisch gewachsene, Infrastruktur. Mein Entwicklungsrechner ist Windows, auf dem der Entwicklungsse...
Besseres Debugging in PHP Debugging in PHP ist das größte Arschloch von allen nicht schön. Wohl dem, der einigen Aufwand betrieben hat, um XDebug an den Start zu kriegen. Aber ...
10 nützliche PHP Snippets PHP ist eine fast sinnvolle Programmiersprache bei der am Ende alles immer so endet, dass man die gleichen Aufgaben immer wieder erledigen muss. Insof...

Schreibe einen Kommentar