Ich wollte schon lange eine Komprimierung aller Dateien auf meinem Server aktivieren, aber alle Versuche die Komprimierung über das Apache Module mod_deflate oder mod_gzip zu aktivieren liefen ins Leere. Ich fand ständig super aufwändige Anleitungen, wie ich mir das selbst kompilieren und dann mit vielen Anpassungen unter Apache zum Laufen bekomme. Ich bin aber immer davor zurückgeschreckt es auch umzusetzen, da ich kein ausgewiesener Linux und Apache Profi bin.
An meinem Geburtstag habe ich dann durch Zufall auf der Suche nach einem anderen Problem gesucht habe unter anderem auf der Website debianroot.de eine super einfache Anleitung gefunden, wie man DEFLATE einfach aktivieren kann.
MOD_DEFLATE aktivieren
Ich habe erfahren, dass DEFLATE bereits bei Apache2 installiert ist und man es nur noch aktivieren muss. Dazu ist ein einziger simpler Befehl notwendig:
a2enmod deflate
Das ist alles! Damit DEFLATE aber auch genutzt werden kann und die Dateien ab sofort komprimiert werden ist es zuerst einmal notwendig den Apache2 neu zu starten. Das geht auf den meisten Systemen mit folgendem Befehl:
/etc/init.d/apache2 restart
Der Befehl a2enmod
gibt teilweise die Meldung aus man sollte den Befehl /etc/init.d/apache2 force-reload
ausführen, aber das alleine hat bei mir nicht geholfen.
Einrichten der Komprimierung
Damit die Seiten und Dateien aber auch komprimiert werden, muss noch die .htaccess
Datei angepasst werden. Hier mal meine aktuelle Anpassung:
# Turn on compression <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain text/html text/xml AddOutputFilterByType DEFLATE text/css text/javascript text/x-js AddOutputFilterByType DEFLATE application/xml application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript application/x-javascript </IfModule>
Einige JavaScript Dateien wurden interessanterweise mit dem Content-Type text/x-js
ausgeliefert, obwohl weder der Standard Content-Type in HEAD noch das Attribut des STYLE Tags diesen Content-Type angaben. Mit Firebug und YSlow kann man sehr gut kontrollieren ob die Dateien komprimiert werden.
Fazit
Ich habe die Installation und Konfiguration so wie hier beschrieben auf einem Strato V-Server mit Ubuntu sowie auf einem 1&1 Root-Server mit OpenSUSE erfolgreich testen können. Solltet ihr also ein anderes Serverbetriebssystem nutzen, dann kann sich der ein oder andere Befehl unterscheiden.
Durch das Komprimieren aller JavaScript, CSS und HTML Daten konnte ich auf einem System das Ladevolumen um über ein Drittel verringern. Ich finde für zwei Befehle und eine kleine Anpassung der .htaccess ist das ein tolles Ergebnis. Es ist eigentlich schade, dass DEFLATE nicht bei allen Apache2 Installationen standardmäßig aktiviert ist. Denn wer keinen ROOT-Zugriff auf den Server hat wird es wohl nicht ohne weiteres aktivieren können.
Ihr könnte aber in der Ausgabe der phpinfo() Funktion auf einem System mit PHP sehr schnell rausfinden, ob DEFLATE schon aktiv ist. Im Abschnitt „apache2handler“ findet ihr ganz unten die Zeile „Loaded Modules“, in der mod_deflate aufgeführt sein sollte. Eventuell ist aber auch mod_gzip aufgeführt, was ebenfalls zur Komprimierung eingesetzt werden kann. Sollte beides nicht vorhanden sein und ihr keinen ROOT-Zugriff haben hilft vermutlich nur ein verzweifelter Anruf beim Support eures Hosters.
Ich hoffe, dass dem ein oder anderen von euch der Tipp ebenso weiterhelfen konnte wie mir. Ich habe mir damit zumindest selbst ein sehr schönes Geburtstagsgeschenk gemacht. Falls ihr sonstige Anmerkungen oder Fragen habt würde ich mich wie immer über einen Kommentar freuen.
Das du „text/x-js“ als MIME Type angezeigt bekommst liegt daran, dass es ein Default-Wert ist, der vom Server aus „x-“ und der Datei-Extension gebildet wird, wenn er keinen passenden MIME-Type ermitteln kann. Abhilfe: „AddType application/x-javascript .js“ in deiner .htaccess (im Web-Verzeichnis) oder httpd.conf eintragen.
Vielen Dank für die Anleitung. Sie hat mir eine lange Suche und umständliches Übersetzen erspart. Es hat genauso funktioniert, wie beschrieben.
System:
Server version: Apache/2.2.17 (Linux/SUSE)
Viele Grüße
Uwe Schoknecht