Home / Allgemein / HowTo: gzip Komprimierung in Apache und IIS6 + IIS7 aktivieren
apache logo

HowTo: gzip Komprimierung in Apache und IIS6 + IIS7 aktivieren

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:

GET_Befehle-1

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:

get_gzip-1

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 für Apache / IIS Server konfigurieren

Apache gzip Komprimierung aktivieren (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

[sam id=“2″ codes=“true“]

IIS6 gzip Komprimierung aktivieren (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.

iis_properties

genauere Anleitung zur erweiterten Konfiguration findet ihr Hier

IIS7 gzip Komprimierung aktivieren (Windows)

Im IIS7 müssen zuerst die Rollendienste aktiviert werden. Dazu wird im „Server Manager“ unter „Rollen“ dem IIS der Rollendienst „Komprimierung statischer Inhalte“ und/oder „Komprimierung dynamischer Inhalte“ nachinstalliert.

IIS7 Rollendienst Komprimierung

Anschließend kann in der IIS7 Verwaltung die gzip Komprimierung eingeschaltet werden. Entweder global oder für die einzelnen Webseiten. Global können noch einige zusätzliche Einstellungen vorgenommen werden:

IIS7 gzip Komprimierung IIS7 gzip Komprimierung aktiveren

IIS7 JavaScript (js) gzip Komprimierung aktivieren (Windows)

Damit auch Javascript Dateien (.js) komprimiert ausgeliefert werden müssen die Mime-Types entsprechend umgeschrieben werden. Dazu wird im IIS Manager der Punkt MIME-Typ aufgerufen und der MIME-Typ der .js von application/javascript auf text/javascript umgeschrieben.

IIS 7 Javascript Komprimierung

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…

4.2/5 - (12 votes)

Auch cool

Die Rolle der KI in technischen Diagrammen: Verbesserung der Genauigkeit und Geschwindigkeit

In der heutigen Zeit, in der die Technologie in rasantem Tempo voranschreitet, spielt die Künstliche …

16 Kommentare

  1. Vielen Dank für diese mit Liebe erstellte Dokumentation 🙂

  2. Hallo,

    die Anleitung ist echt super… Hab es gerade bei meinem Webserver umgesetzt. Funktzt super

  3. Danke für die gut recherchierten Infos. Ich werde meinen Webhoster auch bitten, die gzip-Komprimierung zu aktivieren.

  4. Durch Zufall drauf gestoßen und dann sowas nützliches!

    Werde ich gleich zu hause mal testen.

  5. Merci für die gute Anleitung – soeben auf meinem V-Server umgesetzt – funkt perfekt!

  6. Vielen Dank für den Artikel, genau das wonach ich gesucht habe!

  7. Super. Der Tipp von Google hat mich drauf gebracht da mal nach zu haken – und sowas einfaches dann 🙂

  8. Moin,

    bei mir ist es leider so, dass mein VServer gelöscht wird, wenn ich nicht meine Prozessorlast verringere. Daher habe ich es wieder abgeschaltet.

    Ein weiterer Nachteil, die Seite erscheint erst, nachdem sie komplett geladen wurde. Das geht zwar schneller dauerte aber manchmal doch länger..

    Weiß auch nicht, eigentlich gehört es mittlerweile zum guten Ton.

    Gruß
    Ralph

  9. Bringt auf der verlinkten Seite mal glatt 74.5%, wenn ich dem Test in dem Tool glauben schenken darf.

    Haben die deflate.conf so wie oben angepasst, aber Googles PageSpeed-Plugin für den Firefox moniert immer noch, dass .css und .js nicht komprimiert sind. Der Autor oder jemand anderes eine Idee, warum das so ist?

  10. Hi,
    verstanden habe ich zwar wie das ganze jetzt abläuft, da ich aber keine Ahnung habe, könnte ich jemand gebrauchen der mir mal zeigt wie die Komprimierung aktiviert wird.

  11. gzip-Komprimierung ist nicht nur eine Möglichkeit, ungeduldige User vor dem vorzeitigen Abspringen abzuhalten, vermehrt sollte der Ladezeit einer Website auch aus Suchmaschinenoptimierungssicht Beachtung geschenkt werden. Google betrachtet (oder wird es in naher Zukunft) die Ladezeit als einen Faktor für das Ranking in SERPS. Nicht umsonst wird in den Google Webmaster Tools gzip-Komprimierung zur Optimierung der Ladezeit empfohlen.

  12. schöne, umfassende Erklärung. Danke!

  13. Hi,
    vielen Danke für die super Erklärung. Hab wieder was gelernt!
    Grüße

  14. Danke für diesen doch recht umfangreichen Artikel. Vielleicht könntest du noch ein Codesnippet hinzufügen welchen auch normale User ohne Root-Zugriff nutzen können. Danke auch für den Link zum „Test-Tool“ ich wusste bisher nicht so recht ob der Code auch funktioniert.

  15. Hallo ich bekomme immer diese nachrichten, Die HTML-Seiten sollten in GZip komprimiert ausgeliefert werden. Wie kann ich das einrichten ?

    Gruß
    Sicher