WebseitenOptimierung mit gzip Komprimierung in Apache2 und IIS6
Die gzip Komprimierung ist eine einfache Methode, um den verursachten Traffic einer Webseite zu reduzieren und die Performance zu erhöhen und zusätzlich die Kosten zu reduzieren.
Um zu erklären wie die gzip Komprimierung funktioniert, sollte man erstmal grundlegend wissen wie ein normaler Aufruf (Request) und die Antwort (Response) einer Webseite funktioniert. Grundsätzlich ist es aber so das jeder moderne Webbrowser, der letzten Jahre gzip Komprimierung unterstützt. Wenn ihr zB.: in eurem Browser http://www.sysadminslife.com ansurft funktioniert die Auslieferung der Webseite wie folgt mit- und ohne gzip Komprimierung:
(Anmerkung: Ich führe hier lediglich vereinfachte Beispiele an, um das Thema verständlicher zu machen.)
HTTP Request und Response ohne gzip-komprimierten Inhalt:
1. Der Browser fordert per GET Request die Datei /index.php an
2. Der Server sucht in seinem Webverzeichnis nach der angeforderten Datei
3. Der Server hat die Datei gefunden, sendet den Response Code 200 OK und übermittelt die Datei an den Browser
4. Der Browser wartet nun bis die gesamten 100KB übertragen sind, und zeigt danach die Webseite an
So funktioniert der grundsätzliche Ablauf zwischen dem Browser und dem Server. In einem HTML/PHP Dokument ist natürlich ziemlich viel Einsparungspotential vorhanden, wenn man die Dateien komprimiert. So ist zB. eine Datei die vorher 100KB groß war nur mehr ein Zehntel so groß (10KB) oder sogar noch kleiner. Zudem sei noch gesagt, dass eine moderne Webseite natürlich nicht nur eine html oder php Datei abruft, sondern sich eine Seite aus mehreren php/html Dateien + Datenbankabfragen zusammenbaut.
Ihr wisst jetzt auf was ich hinaus will. Wenn wir die auszuliefernde Datei vorher am Server komprimieren ist sie kleiner und wird damit schneller zum Browser übertragen. Das spart natürlich Zeit und Bandbreite. Der Browser ladet also die gezippte Datei vom Server herunter und extrahiert sie, bevor sie angezeigt wird. Die Auslieferung sieht dann wie folgt aus:
HTTP Request und Response mit gzip-komprimierten Inhalt:
1. Der Browser fordert per GET Request die Datei /index.php an und teilt mit, dass er auch komprimierten Inhalt annehmen und verarbeiten kann
2. Der Server sucht in seinem Webverzeichnis nach der angeforderten Datei und zippt diese
3. Der Server hat die Datei gefunden, sendet den Response Code 200 OK, teilt dem Browser mit das die Datei gepackt ist und übermittelt diese an den Browser
4. Der Browser wartet nun bis die 10KB übertragen sind, entpackt sie und zeigt danach die Webseite an
Genauer Betrachtet
Der Browser sendet im Anfrage-Header mit, dass er auch gezippten Inhalt annehmen und verarbeiten kann. In der Regel sendet jeder moderne Webbrowser diesen Eintrag im Header mit: Accept-Encoding: gzip, deflate
Der Server sendet im Antwort-Header mit, ob der Inhalt komprimiert ausgeliefert wird. Content-Encoding: gzip Bei einem Webserver ist die Komprimierung nicht standardmäßig eingeschalten. Wenn der Server den Antwort Header nicht mitsendet, dann wird der Inhalt nach wie vor ohne Komprimierung übertragen.
Gegenüberstellung Kosten/Nutzen der Komprimierung
Natürlich bringt die Komprimierung am Server auch einen kleinen Minuspunkt mit sich. Die CPU Last am Server wird Pro Anfrage um ca. 10% ansteigen. Bei modernen Server CPUs sollte das aber kein allzu großes Problem darstellen. Da sich Dateien wie HTML, PHP, CSS, und JavaScript ziemlich gut komprimieren lassen, wird ca. 70-80% der benötigten Transferdatenmenge eingespart, wodurch die Dateien schneller beim User ankommen. Die durch die Übertragung eingesparte Zeit ist aber bei weitem höher als die Zeit, die am Server zusätzlich benötigt wird um den Inhalt zu zippen. Also letztendlich doch ein klares Ja für die Auslieferung komprimierten Inhalts. Ihr solltet aber trotzdem die Ladezeit einer Webseite vor und nach der gzip Konfiguration vergleichen.
Gzip Komprimierung am Apache 2/IIS 6 Server konfigurieren
Apache2 – unter Linux
Bei Apache2 wird das Modul deflate bereits mitgeliefert. Es muss lediglich noch aktivert werden. Bei Debian oder Ubuntu mit folgendem Befehl:
a2enmod deflate
Nun kann über folgenden Eintrag in der Apache Konfiguration die gzip Komprimierung aktiviert werden. Entweder ihr verwendet den Code in euren vHosts (für einzelne Webseiten) oder ihr setzt ihn global in eure Apache Konfig (für alle Webseiten). Die zu verwendeten MIME Types sollte jeder für sich auswählen. Natürlich ist eine Ausführung innerhalb einen .htaccess Datei für bestimmte Verzeichnisse und Webseiten möglich.
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/php text/css text/js text/javascript text/javascript-x
</IfModule>
Nachdem das Modul aktiviert und die entsprechende Webseite konfiguriert ist, muss der Apache Server neu gestartet werden:
apache2ctl restart
genauere Anleitung zur erweiterten Konfiguration findet ihr Hier
IIS6 – unter Windows
Im IIS Manager auf “SERVERNAME (local Computer)” doppelklicken und mit der rechten Maustaste auf “Web Sites” und “Properties” auswählen.
Nun auf den “Service” Tab wechseln und ihr seht bereits den Punkt “HTTP compression”. Je nach dem ob ihr auch dynamischen Inhalt komprimieren wollt könnt ihr “Compress application files” anhaken. “Compress static files” muss auf jeden Fall angehakt werden.
Zusätzlich könnt ihr jetzt ein temporäres Verzeichnis angeben wo die gezippten Files, gecached werden. Dazu einfach auf “Browse” klicken und einen Ordner auf einem Laufwerk, mit genügend Speicherplatz auswählen.
Ein Speicherplatz Limit für den gecachten Inhalt kann ebenfalls definiert werden. Ich rate aber bei genügend Speicherplatz dazu auf “Unlimited” zu stellen.
genauere Anleitung zur erweiterten Konfiguration findet ihr Hier
Test ob die gzip Komprimierung funktioniert
Hier gibt es ein kleines Tool zum Testen ob eure Webseite gzip-komprimierten Inhalt ausliefert
Fazit
Für einen Webseiten Betreiber ist es absolut wichtig die Ladezeiten eine Webseite so gering wie möglich zu halten, da man davon ausgeht das jede Sekunde, die eine Seite länger zum Laden benötigt einige User abspringen. Da bei einem ordentlichen Server möglich ist die Ladezeiten beträchtlich zu verringern, sollte man die gzip Komprimierung verwenden. Zusätzlich lässt sich noch bares Geld sparen, weil der anfallende Traffic ebenfalls drastisch reduziert wird. Ich persönlich habe bisher nur gute Erfahrungen damit gemacht, bin aber jederzeit offen für Kritik, oder anderer Meinungen zum Thema gzip Komprimierung. Let’s Discuss…
Ähnliche Artikel:
8 Kommentare zum Thema WebseitenOptimierung mit gzip Komprimierung in Apache2 und IIS6
Leave a Reply
Letzte Artikel
Translator

News Empfehlungen
- Wireshark mit zahlreichen Verbesserungen (heise open news)
- Red Hat: Mit der Cloud zur Platform as a Service (Linux-Magazin Online News)
- Bossie Awards 2010: Beste Open-Source-Software-Pakete des Jahres (TecChannel | Alle News)
- Kritische Lücken bleiben immer öfter ungepatcht (heise Security)
- Apple Special Event findet am 1. September statt (hack2learn)






[...] erreicht hat. Ferner kann man beim Webserver selbst die zu übertragende Datenmenge durch Komprimierung verringern, was dann natürlich auch zu geringeren Transportzeiten [...]
Vielen Dank für diese mit Liebe erstellte Dokumentation
Hallo,
die Anleitung ist echt super… Hab es gerade bei meinem Webserver umgesetzt. Funktzt super
Danke für die gut recherchierten Infos. Ich werde meinen Webhoster auch bitten, die gzip-Komprimierung zu aktivieren.
Durch Zufall drauf gestoßen und dann sowas nützliches!
Werde ich gleich zu hause mal testen.
Merci für die gute Anleitung – soeben auf meinem V-Server umgesetzt – funkt perfekt!
Vielen Dank für den Artikel, genau das wonach ich gesucht habe!
Super. Der Tipp von Google hat mich drauf gebracht da mal nach zu haken – und sowas einfaches dann