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

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...
Chatbots in PHP mit BotMan Die größte Sau die in 2017 bisher durchs Dorf getrieben wird, ist der Chatbot. Ein zugegeben sehr komische Entwicklung denn die Bots gibt es schon ewi...
Vergleich von PHP-Entwicklungsumgebungen PHP-Entwicklungsumgebungen gibt es inzwischen wie Sand am Meer. Jede behauptet von sich die einzig wahre zu sein, und natürlich ist es fast unmöglich ...
Application.ini – Cheat Sheet für das Zend F... Das Zend Framework ist so eine Sache, es kommt unheimlich gut an beim Kunden, aber unter "normalen Umständen" wäre es sicherlich nicht meine erste Wah...

Schreibe einen Kommentar