GZIP-Komprimierung mit mod_deflate

Die GZIP-Komprimierung packt die Daten, die der Server an den User versendet, und komprimiert sie dadurch. Der Vorteil dabei ist, dass der Traffic extrem sinkt (Komprimierungen von 70 % sind keine Seltenheit) und somit die Seite schneller geladen wird, da alle Dateien schneller geladen werden konnten.

Um die Komprimierung im Apache 2.x zu aktivieren, benötigt man einige Arbeitsschritte in der httpd.conf.
Diese öffnet man mit einem Texteditor und sucht folgende Zeile:

LoadModule deflate_module modules/mod_deflate.so

Steht vor dieser Zeile noch ein #, so sollte dieses entfernt werden. Damit wird grundsätzlich die Komprimierung aktiviert.

Nun kann man sich die Komprimierung konfigurieren. Standardmäßig wird das immer zwischen den beiden Klammern gemacht:

<IfModule mod_deflate.c>
</ifModule>

Damit diese Regeln wirklich nur greifen, wenn mod_deflate aktiviert ist. Dann benötigt man noch die gewohnten Location-Klammern:

<IfModule mod_deflate.c>
<Location />
</Location> 
</IfModule>

Nun kann man sich an die eigentliche Konfigurierung machen. Aktivieren lässt sich die Komprimierung allgemein mit dieser Zeile:

SetOutputFilter DEFLATE

Steht das so, funktioniert die Komprimierung bereits.

Nun kann man aber noch weiter konfigurieren.

Ausnahmen

SetEnvIfNoCase Request_URI  \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI  \
\.(?:exe|t?gz|zip|gz2|sit|rar)$ no-gzip dont-vary

Diese Ausnahmen besagen, dass *.gif, *.jpg, *.jpeg, *.png, *.exe, *.tgz, *.gz, *.zip, *.gz2, *.sit und *.rar nicht komprimiert werden. Warum auch? Sie sind bereits komprimiert.

Bestimmte Dateitypen

AddOutputFilterByType DEFLATE text/html text/plain text/xml

In diesem Falle werden nur HTML-, Plain- und XML-Texte komprimiert. Es sind sämtliche Dateitypen möglich, die dem System als MIME-Type bekannt sind. Beispiele:

AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
AddOutputFilterByType DEFLATE image/svg+xml

Mehrere kann man wie im Beispiel oben hintereinander anfügen.

Log

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate.log deflate

Hierbei wird im Apache-Logverzeichnis eine zusätzliche Log-Datei speziell für die Komprimierung erstellt. In diesem Falle würde sie so aussehen:

“GET /index.php HTTP/1.1″ 8888/77777 (11%)

In diesem Fall wurde die index.php empfangen, die Originalgröße war 77777 Byte und die komprimierte Größe nur noch 8888 Byte. Sie wurde auf 11 % komprimiert. Das LogFormat kann man beliebig ändern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.