Die Da­ten­kom­pres­si­ons­soft­ware gzip ist platt­form­über­grei­fend nutzbar und ins­be­son­de­re in der Web­ent­wick­lung bzw. in Web­pro­jek­ten als Kom­pri­mie­rungs­lö­sung gefragt. gzip lässt sich einfach über das jeweilige Kom­man­do­zei­len-Tool ak­ti­vie­ren und bedienen, um Spei­cher­platz zu sparen und die Sys­tem­per­for­mance zu ver­bes­sern.

Wie funk­tio­niert gzip?

gzip – im Übrigen eine Kurzform für „GNU zip“ – basiert auf dem frei nutzbaren Deflate-Al­go­rith­mus, der das Da­ten­kom­pres­si­ons­ver­fah­ren LZ77 (Lempel-Ziv 77) und die Huffman-Kodierung kom­bi­niert. Mithilfe dieser Techniken scannt gzip Dateien auf doppelte Zei­chen­ket­ten. Stößt das Programm auf solche wie­der­keh­ren­den Sequenzen, ersetzt es sie durch einen Verweis auf den zuerst auf­tau­chen­den String, wobei die Länge einer solchen Sequenz üb­li­cher­wei­se auf 32.000 Bytes be­schränkt ist. Taucht eine Zei­chen­ab­fol­ge also nicht in den vor­an­ge­gan­ge­nen 32.000 Bytes auf, wird sie ohne Kom­pri­mie­rung in der gzip-Datei, die die Endung .gz erhält, ge­spei­chert.

Das Verfahren ist auf einzelne Dateien be­schränkt, weshalb man zu­sätz­lich das Pack­pro­gramm tar benötigt, um so­ge­nann­te Tarball-Archive mit den Endungen .tar.gz oder .tgz zu erstellen. Stan­dard­mä­ßig wird die Aus­gangs­da­tei im Anschluss an die gzip-Kom­pri­mie­rung gelöscht (bei direkter Anwendung auf eine Datei). Per op­tio­na­ler Pa­ra­me­ter­an­ga­be (-k) können Sie diese au­to­ma­ti­sche Funktion jedoch de­ak­ti­vie­ren. Um kom­pri­mier­te Pakete wieder zu entpacken, kann man entweder auf die Anwendung gunzip oder aber auf den ent­spre­chen­den gzip-Command zu­rück­grei­fen.

gzip: Syntax und Be­fehls­über­sicht

Auch wenn es grafische Ober­flä­chen für die ver­schie­de­nen Platt­for­men gibt, ist die Bedienung von gzip via Commands über das Terminal bzw. die Ein­ga­be­auf­for­de­rung natürlich ohne Weiteres möglich. Auch für Neulinge stellt dies keine große Her­aus­for­de­rung dar, da gzip als klas­si­sches Kom­man­do­zei­len-Tool für diese Nut­zungs­wei­se optimiert ist. Die all­ge­mei­ne Syntax hat dabei folgende Form:

gzip Option Datei(en)
bash

Die Angabe von Optionen ist dabei kei­nes­wegs ver­pflich­tend. Bleibt das Feld leer, greift gzip einfach auf die Stan­dard­ein­stel­lun­gen zurück. So genügt bei­spiels­wei­se der folgende einfache Befehl, um eine kom­pri­mier­te Version der Textdatei beispiel.txt zu erstellen:

gzip beispiel.txt
bash

Um Dateien später zu entpacken oder spezielle An­wei­sun­gen zum Kom­pri­mie­rungs­grad, zum Ablageort oder dem Umgang mit der Ori­gi­nal­da­tei zu geben, benötigen die Kommandos aber in jedem Fall die passenden Spe­zi­fi­ka­tio­nen. Die folgende Tabelle gibt einen Überblick über die wich­tigs­ten gzip-Commands:

Option Be­schrei­bung
-1-9 Definiert den Kom­pri­mie­rungs­grad (1–9), wobei der Wert 1 für die schwächs­te und am schnells­ten durch­ge­führ­te Kom­pri­mie­rung und der Wert 9 für die beste, am lang­sams­ten durch­ge­führ­te Kom­pri­mie­rung steht; vor­ein­ge­stell­ter Wert ist 5
-r Durch­sucht rekursiv das Ver­zeich­nis (also inklusive aller Un­ter­ver­zeich­nis­se) und kom­pri­miert bzw. de­kom­pri­miert alle ent­hal­te­nen Dateien
-f Forciert die gzip-Kom­pri­mie­rung und über­schreibt notfalls bereits vor­han­de­ne Dateien mit demselben Da­tei­na­men
-d Entpackt die aus­ge­wähl­te Datei in das aktuelle Ver­zeich­nis
-k Ver­hin­dert die Löschung der Ori­gi­nal­da­tei
-l Spielt In­for­ma­tio­nen wie z. B. die Kom­pres­si­ons­ra­te einer ver­pack­ten Datei aus
-c Gibt die kom­pri­mier­te Datei in der Stan­dard­aus­ga­be aus; für ge­wöhn­lich der Bild­schirm, der mit der Kom­man­do­zei­le verbunden ist
-q De­ak­ti­viert sämtliche gzip-Meldungen
-t Testet die In­te­gri­tät der ver­pack­ten Datei
-h Listet alle ver­füg­ba­ren Optionen auf

Use Cases für die gzip-Com­pres­si­on

gzip ist heute nahezu platt­form­über­grei­fend nutzbar und beliebig er­wei­ter­bar, solange die für das Projekt aus­ge­wähl­te GPL-Lizenz beachtet wird. Auf Linux-Systemen ist das Kom­pri­mie­rungs­werk­zeug für ge­wöhn­lich au­to­ma­tisch in­stal­liert oder in­stal­la­ti­ons­be­reit in der Pa­ket­ver­wal­tung enthalten. Auf der of­fi­zi­el­len gzip-Homepage gibt es auch Versionen für macOS und Windows. Um Spei­cher­platz zu sparen, können Sie die Software auf diesen Systemen jederzeit einsetzen.

Ein weiteres Ein­satz­ge­biet ist das Web: Webserver wie Apache be­herr­schen die gzip-Com­pres­si­on seit Jahren und moderne Browser können die kom­pri­mier­ten Dateien in­ter­pre­tie­ren und während des Webseiten-Ren­de­rings entpacken. Hier kann gzip seine Stärken also komplett aus­spie­len: Ist das Verfahren aktiviert, initiiert der Webserver au­to­ma­tisch die Kom­pri­mie­rung von im Webspace hoch­ge­la­de­nen sowie von dynamisch erzeugten Website-Elementen. Auf diese Weise kann die Ladezeit einer Website im Rahmen einer grund­le­gen­den Website-Op­ti­mie­rung erheblich ver­rin­gert werden. Die De­kom­pres­si­on übernimmt der Browser wäh­rend­des­sen im Hin­ter­grund, ohne zu­sätz­li­che Band­brei­te zu be­an­spru­chen. Ins­be­son­de­re User mobiler Geräte pro­fi­tie­ren von diesem Per­for­mance-Boost, der indirekt auch das Such­ma­schi­nen-Ranking positiv be­ein­flusst.

gzip-Kom­pri­mie­rung in Apache ak­ti­vie­ren – so geht‘s

Webserver bieten das gzip-Kom­pri­mie­rungs­ver­fah­ren in der Regel in Form eines Moduls an, das Sie lediglich ak­ti­vie­ren müssen. Heut­zu­ta­ge geben viele Web­hos­ting-Anbieter die Funktion stan­dard­mä­ßig frei, während dies in der Ver­gan­gen­heit nicht immer der Fall war. Wenn Sie sich unsicher sind, ob die gzip-Com­pres­si­on durch Ihren Hoster zu­ge­las­sen wird, können Sie diesen entweder direkt kon­tak­tie­ren oder al­ter­na­tiv eine manuelle Abfrage in die Wege leiten.

Bei einem Apache-Webserver über­prü­fen Sie die Modul-Ein­stel­lun­gen bei­spiels­wei­se mithilfe einer einfachen phpinfo()-Ausgabe. Der Eintrag HTTP_ACCEPT_ENCODING verrät Ihnen, welche bzw. ob eine Kom­pri­mie­rungs­me­tho­de aus­ge­wählt ist. Ist gzip verfügbar, haben Sie drei ver­schie­de­ne Mög­lich­kei­ten, den Kom­pri­mie­rungs­hel­fer für Ihre Zwecke zu nutzen.

Mög­lich­keit 1: gzip-Kom­pri­mie­rung in der .htaccess-Datei ak­ti­vie­ren

Über die .htaccess-Datei können Sie ver­zeich­nis­spe­zi­fi­sche Ein­stel­lun­gen vornehmen und so Ihren Webserver in Echtzeit kon­fi­gu­rie­ren. Das wird dadurch möglich, dass die Kon­fi­gu­ra­ti­ons­da­tei, die ty­pi­scher­wei­se im Root-Ver­zeich­nis zu finden ist, bei jedem Request, der den Server erreicht, au­to­ma­tisch aus­ge­le­sen wird. Bei einigen Web­hos­ting-Anbietern ist die .htaccess-Datei al­ler­dings in einem anderen Ordner hin­ter­legt, aus­ge­blen­det oder gar für den Zugriff gesperrt. In diesem Fall bleibt Ihnen nur die Option, den Hoster zu kon­tak­tie­ren und die Freigabe zu erbitten. Können Sie die Kon­fi­gu­ra­tio­nen vornehmen, schalten Sie die gzip-Com­pres­si­on über das Modul für den Deflate-Al­go­rith­mus (mod_deflate) ein, indem Sie der Datei folgenden Code hin­zu­fü­gen:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>
txt
Tipp

Auch für die beiden Module mod_gzip und mod_deflate benötigen Sie die Freigabe durch Ihren Webhoster.

Mög­lich­keit 2: gzip-Com­pres­si­on via PHP ein­schal­ten

Es ist möglich, das Kom­pri­mie­rungs­ver­fah­ren mithilfe eines einfachen PHP-Eintrags zu ak­ti­vie­ren. Der Nachteil dabei: Der Code muss für jedes PHP-Dokument einzeln ein­ge­tra­gen werden. Sie sollten also nur auf diese Option zu­rück­grei­fen, wenn Sie nicht über die er­for­der­li­chen Be­rech­ti­gun­gen verfügen, um die .htaccess-Datei be­ar­bei­ten zu können. Die Codezeile, die Sie an den Anfang der je­wei­li­gen Datei setzen müssen, lautet fol­gen­der­ma­ßen:

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

Mög­lich­keit 3: gzip per Plugin im­ple­men­tie­ren

Neben den beiden vor­ge­stell­ten manuellen Lösungen existiert auch eine Variante, die von Ihnen nur einen minimalen Ein­rich­tungs­auf­wand erfordert: Die Ak­ti­vie­rung der gzip-Kom­pri­mie­rung durch ein Plugin für das von Ihnen genutzte Content-Ma­nage­ment-System. Solche nütz­li­chen Er­wei­te­run­gen, die Sie innerhalb weniger Minuten einbinden und gemäß Ihren Wünschen anpassen, finden Sie in erster Linie für CMS wie WordPress, die auf PHP basieren. Die folgende Auf­lis­tung enthält drei der be­lieb­tes­ten Plugins für die Weblog-Software:

  • W3 Total Cache: Das WordPress-Plugin W3 Total Cache ver­spricht eine deutlich spürbare Ver­bes­se­rung der Website-Per­for­mance. Neben diversen Caching-Me­cha­nis­men und spe­zi­el­lem Mobile-Support enthält die SEO- und Usability-Suite auch Optionen, um die gzip-Kom­pri­mie­rung zu ak­ti­vie­ren.
  • WP Rocket: Auch bei WP Rocket handelt es sich um ein klas­si­sches WordPress-Caching-Plugin. Die Er­wei­te­rung ist einfach zu bedienen und aktiviert alle wichtigen Funk­tio­nen zur Ge­schwin­dig­keits­op­ti­mie­rung, ein­schließ­lich der gzip-Kom­pri­mie­rung, von Anfang an.
  • WP Per­for­mance Score Booster: Über 10.000 aktive In­stal­la­tio­nen kann die Er­wei­te­rung WP Per­for­mance Score Booster bereits für sich ver­zeich­nen. Mithilfe des Plugins ak­ti­vie­ren Sie gzip pro­blem­los und kom­pri­mie­ren in der Folge effektiv die Inhalte Ihres Web­pro­jekts wie Texte, HTML, Ja­va­Script, CSS, XML und Co.

gzip auf einem NGINX-Webserver kon­fi­gu­rie­ren – Anleitung

Wenn Sie Ihre Website-Inhalte mithilfe eines NGINX-Web­ser­vers aus­lie­fern, haben Sie ebenfalls die Mög­lich­keit, das gzip-Verfahren ein­zu­set­zen, um die Ladezeit Ihres Projekts zu ver­bes­sern. Hierfür müssen Sie lediglich das Modul ngx_http_gzip_module ent­spre­chend kon­fi­gu­rie­ren. Stan­dard­mä­ßig ist die Direktive gzip, über die Sie den Kom­pri­mie­rungs­dienst ak­ti­vie­ren bzw. de­ak­ti­vie­ren, aus­ge­schal­tet.

Um diese Ein­stel­lung zu ändern, öffnen Sie die zentrale Kon­fi­gu­ra­ti­ons­da­tei nginx.conf und suchen dort die gzip-Direktive. Ersetzen Sie den Eintrag gzip off durch gzip on. Der folgenden Tabelle können Sie die Bedeutung und Mög­lich­kei­ten einiger weiterer Di­rek­ti­ven zur Kon­fi­gu­ra­ti­on der NGINX-gzip-Kom­pri­mie­rung entnehmen:

Direktive Syntax Stan­dard­ein­stel­lung Be­schrei­bung
gzip_buffers gzip_buffers Anzahl Größe; `gzip_buffers 32 4k 16 8k;`
gzip_comp_level gzip_comp_level Komprimierungsgrad; gzip_comp_level 1; Gibt den Kom­pri­mie­rungs­grad an; mögliche Werte: 1–9
gzip_min_length gzip_min_length Mindestlänge; gzip_min_length 20; Gibt die Min­dest­län­ge einer ver­pack­ten Datei in Bytes an
gzip_http_version gzip_http_version Versionsnummer; gzip_http_version 1.1; Legt fest, ab welcher HTTP-Version eine Anfrage mit einer kom­pri­mier­ten Antwort be­ant­wor­tet wird
gzip_types gzip_types Content-Typ; gzip_types text/html; Regelt, für welche Content-Typen die Kom­pri­mie­rung gelten soll (ebenfalls möglich: CSS, JSON, XML, …)

So können Sie die gzip-Kom­pri­mie­rung testen

Wenn Sie die gzip-Com­pres­si­on für Ihre Web­prä­senz kon­fi­gu­riert haben, können Sie sich mithilfe ver­schie­de­ner Tools davon über­zeu­gen, dass das Verfahren wie gewünscht funk­tio­niert und Ihr Webserver bei ent­spre­chen­den Anfragen kom­pri­mier­te Inhalte aus­lie­fert. Allen voran ist hierbei Google PageSpeed Insights zu empfehlen. Nach Eingabe einer be­lie­bi­gen Seite Ihres Auftritts ana­ly­siert das Tool au­to­ma­tisch den Inhalt und in­for­miert Sie an­schlie­ßend über die Per­for­mance-Stärken und -Schwächen dieser Seite. Sie erhalten auf diese Weise u. a. eine In­for­ma­ti­on darüber, ob die gzip-Kom­pri­mie­rung aktiviert ist. Einen einfachen gzip-Test können Sie al­ter­na­tiv mit dem HTTP Com­pres­si­on Test auf WhatsMyIP.org durch­füh­ren.

Zum Hauptmenü