GZip: Webseite beschleunigen (Page Speed) durch Kompression

Im Artikel „WordPress mit Cache beschleunigen: Plugin Quick Cache“ haben wir uns mit Caching-Möglichkeiten, im Artikel „Quick Cache – Page Speed nachgemessen“ mit den tatsächlichen Geschwindigkeiten beschäftigt. Es wurde gezeigt, dass dank eines Caches der sogenannte Page Speed, also die Geschwindigkeit, die zwischen Seitenaufruf und der tatsächlichen Anzeige im Browser vergeht, durchaus mit akzeptablen Mitteln gesteigert werden kann.
Heute möchten wir eine weitere Möglichkeit untersuchen, die den Page Speed noch weiter beschleunigen soll, die Kompression der Webseiten mittels GZip.

Wie funktioniert die Kompression mittels GZip?
Im Normalfall überträgt der Server eine Webseite und alle Elemente unkomprimiert. Der Browser empfängt die Daten und zeigt diese an. Allerdings können heute fast alle Browser auch mit komprimierten Dateien umgehen. Wenn der Server die Daten mittels GZip-Kompression an den Browser übermittelt, werden die Daten, die übertragen werden, durchschnittlich um 70 bis 80 Prozent (!) kleiner. Somit sparen wir Übertragungszeit ein. Gerade die Übertragungszeit ist oftmals der Flaschenhals beim Aufbau der Seite (Page Speed), denn nicht jeder Surfer kann auf eine nicht ausgelastete Breitbandanbindung zurückgreifen.
Erkauft wird sich die Erhöhung des Page-Speed jedoch durch einen Mehraufwand am Server und im Browser des Lesers. Denn der Server muss die Daten komprimieren, der Browser des Besuchers muss die Daten wieder entpacken. Mit Blick auf die Zeitersparnis sind dies jedoch akzeptable Nachteile.

Können alle Browser mit einer GZip-Kompression umgehen?
Nein. Im Netz kursieren Zahlen, dass über 90 Prozent der Browser GZip „verstehen“. Ich selbst habe viele Browser getestet. Keiner hatte Probleme mit der Kompression. Auch mobile Browser wie ein HTC Desire oder ein iPhone kommen mit den Kompression erstaunlich gut zurecht.

Wie kann ich die GZip-Kompression einschalten?
Für die Nutzung der GZip-Kompression gibt es mehrere Möglichkeiten

GZip Kompression mittels .htaccess
Die einfachste Möglichkeit, die GZip-Kompression zu nutzen, ist ein einfacher Eintrag in der .htaccess oder vhost-Datei. Diese Möglichkeit funktioniert bei allen Webseiten (auch WordPress), wenn auf dem Server das Apache-Modul „mod_deflate“ installiert bzw. aktiviert ist.

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml
AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml
AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf
AddOutputFilterByType DEFLATE font/truetype font/opentype
</IfModule>

Diesen Code einfach in die vhost oder .htaccess-Datei übernehmen. Der Code prüft automatisch, ob das Modul „mod_deflate“ vorhanden ist. Wenn ja, werden alle html, css, rss, Javascript und XML-Dateien GZip-komprimiert übertragen.
Ob der Code funktioniert bzw. ob die Daten komprimiert übertragen werden, prüft man einfach durch einen Aufruf über die Seite ismyblogworking.com. Die Seite gibt unter anderem Auskunft über die Komprimierung.
Wenn die Komprimierung nicht funktioniert, kann es sein, dass das Apache-Modul nicht installiert oder eher nicht aktiviert ist (siehe „Apache-Modul „mod_deflate“ aktivieren (auch unter Plesk)“

GZip-Kompression per PHP
Wenn GZip in der PHP.ini aktiviert ist, kann eine GZip-Kompression mittels PHP von jedem Skript aus wie folgt erfolgen:

<?php
ob_start("ob_gzhandler");
?>

Nicht zu verschweigen möchte ich an dieser Stelle, dass dies nur Sinn für einzelne Dateien macht. Denn in jeder PHP-Datei muss der Header so manipuliert werden. Wenn man also nur ein paar PHP-Dateien komprimiert senden möchte, ist dies ein gangbarer Weg. Ansonsten ist die .htaccess-Lösung vorzuziehen.

WordPress-Plugin
Auch unter WordPress ist GZip eine gute Lösung. Prinzipiell benötigt man kein Plugin. Der Code aus dem Abschnitt „GZip Kompression mittels .htaccess“ kann auch bei einer WordPress-Installation aktiviert werden. Die Lösung funktioniert auch bei Seiten  mit Cache.
Wenn (und nur wenn!) der WordPress-Blog auf einem Server oder Host läuft, auf dem das Apache-Modul „mod_deflate“ nicht aktiviert bzw. installiert wurde und man keine administrativen Zugriff hat, kann die GZip-Kompression mittels Plugin aktiviert werden. Auf diese Lösung sollte jedoch nur im zwingenden Ausnahmefall zurückgegriffen werden, da Plugin-intern ebenfalls auf die PHP-Kompression zurückgegriffen wird. Als WordPress-Plugin empfehle ich wpCompressor, dessen Dokumentation auch in deutscher Sprache erhältlich ist.

Apache-Modul „mod_deflate“ aktivieren (auch unter Plesk)
Um das Modul „mod_deflate“ nutzen zu können, muss das Modul installiert und aktiviert sein. Die Installation ist bei den meisten Servern bereits per default erfolgt. Die Aktivierung (so auch bei vielen meiner Ubuntu/Plesk-Konfigurationen) nicht.

Aktivierung von „mod_deflate“ über die Shell (Putty):
a2enmod deflate

Danach ist ein Restart des Apache notwendig mit:
/etc/init.d/apache2 restart

Plesk: Ich empfehle den Restart über die Oberfläche (da sich mein Plesk schon verabschiedet hat, als ich den Apachen über die Shell restartet habe)

Schreibe einen Kommentar