Was ist gzip und wie nutzt man das Tool?
Die Datenkompressionssoftware gzip ist plattformübergreifend nutzbar und insbesondere in der Webentwicklung bzw. in Webprojekten als Komprimierungslösung gefragt. gzip lässt sich einfach über das jeweilige Kommandozeilen-Tool aktivieren und bedienen, um Speicherplatz zu sparen und die Systemperformance zu verbessern.
Wie funktioniert gzip?
gzip – im Übrigen eine Kurzform für „GNU zip“ – basiert auf dem frei nutzbaren Deflate-Algorithmus, der das Datenkompressionsverfahren LZ77 (Lempel-Ziv 77) und die Huffman-Kodierung kombiniert. Mithilfe dieser Techniken scannt gzip Dateien auf doppelte Zeichenketten. Stößt das Programm auf solche wiederkehrenden Sequenzen, ersetzt es sie durch einen Verweis auf den zuerst auftauchenden String, wobei die Länge einer solchen Sequenz üblicherweise auf 32.000 Bytes beschränkt ist. Taucht eine Zeichenabfolge also nicht in den vorangegangenen 32.000 Bytes auf, wird sie ohne Komprimierung in der gzip-Datei, die die Endung .gz erhält, gespeichert.
Das Verfahren ist auf einzelne Dateien beschränkt, weshalb man zusätzlich das Packprogramm tar benötigt, um sogenannte Tarball-Archive mit den Endungen .tar.gz oder .tgz zu erstellen. Standardmäßig wird die Ausgangsdatei im Anschluss an die gzip-Komprimierung gelöscht (bei direkter Anwendung auf eine Datei). Per optionaler Parameterangabe (-k
) können Sie diese automatische Funktion jedoch deaktivieren. Um komprimierte Pakete wieder zu entpacken, kann man entweder auf die Anwendung gunzip oder aber auf den entsprechenden gzip-Command zurückgreifen.
gzip: Syntax und Befehlsübersicht
Auch wenn es grafische Oberflächen für die verschiedenen Plattformen gibt, ist die Bedienung von gzip via Commands über das Terminal bzw. die Eingabeaufforderung natürlich ohne Weiteres möglich. Auch für Neulinge stellt dies keine große Herausforderung dar, da gzip als klassisches Kommandozeilen-Tool für diese Nutzungsweise optimiert ist. Die allgemeine Syntax hat dabei folgende Form:
gzip Option Datei(en)
bashDie Angabe von Optionen ist dabei keineswegs verpflichtend. Bleibt das Feld leer, greift gzip einfach auf die Standardeinstellungen zurück. So genügt beispielsweise der folgende einfache Befehl, um eine komprimierte Version der Textdatei beispiel.txt
zu erstellen:
gzip beispiel.txt
bashUm Dateien später zu entpacken oder spezielle Anweisungen zum Komprimierungsgrad, zum Ablageort oder dem Umgang mit der Originaldatei zu geben, benötigen die Kommandos aber in jedem Fall die passenden Spezifikationen. Die folgende Tabelle gibt einen Überblick über die wichtigsten gzip-Commands:
Option | Beschreibung |
---|---|
-1 … -9
|
Definiert den Komprimierungsgrad (1–9), wobei der Wert 1 für die schwächste und am schnellsten durchgeführte Komprimierung und der Wert 9 für die beste, am langsamsten durchgeführte Komprimierung steht; voreingestellter Wert ist 5
|
-r
|
Durchsucht rekursiv das Verzeichnis (also inklusive aller Unterverzeichnisse) und komprimiert bzw. dekomprimiert alle enthaltenen Dateien |
-f
|
Forciert die gzip-Komprimierung und überschreibt notfalls bereits vorhandene Dateien mit demselben Dateinamen |
-d
|
Entpackt die ausgewählte Datei in das aktuelle Verzeichnis |
-k
|
Verhindert die Löschung der Originaldatei |
-l
|
Spielt Informationen wie z. B. die Kompressionsrate einer verpackten Datei aus |
-c
|
Gibt die komprimierte Datei in der Standardausgabe aus; für gewöhnlich der Bildschirm, der mit der Kommandozeile verbunden ist |
-q
|
Deaktiviert sämtliche gzip-Meldungen |
-t
|
Testet die Integrität der verpackten Datei |
-h
|
Listet alle verfügbaren Optionen auf |
Use Cases für die gzip-Compression
gzip ist heute nahezu plattformübergreifend nutzbar und beliebig erweiterbar, solange die für das Projekt ausgewählte GPL-Lizenz beachtet wird. Auf Linux-Systemen ist das Komprimierungswerkzeug für gewöhnlich automatisch installiert oder installationsbereit in der Paketverwaltung enthalten. Auf der offiziellen gzip-Homepage gibt es auch Versionen für macOS und Windows. Um Speicherplatz zu sparen, können Sie die Software auf diesen Systemen jederzeit einsetzen.
Ein weiteres Einsatzgebiet ist das Web: Webserver wie Apache beherrschen die gzip-Compression seit Jahren und moderne Browser können die komprimierten Dateien interpretieren und während des Webseiten-Renderings entpacken. Hier kann gzip seine Stärken also komplett ausspielen: Ist das Verfahren aktiviert, initiiert der Webserver automatisch die Komprimierung von im Webspace hochgeladenen sowie von dynamisch erzeugten Website-Elementen. Auf diese Weise kann die Ladezeit einer Website im Rahmen einer grundlegenden Website-Optimierung erheblich verringert werden. Die Dekompression übernimmt der Browser währenddessen im Hintergrund, ohne zusätzliche Bandbreite zu beanspruchen. Insbesondere User mobiler Geräte profitieren von diesem Performance-Boost, der indirekt auch das Suchmaschinen-Ranking positiv beeinflusst.
gzip-Komprimierung in Apache aktivieren – so geht‘s
Webserver bieten das gzip-Komprimierungsverfahren in der Regel in Form eines Moduls an, das Sie lediglich aktivieren müssen. Heutzutage geben viele Webhosting-Anbieter die Funktion standardmäßig frei, während dies in der Vergangenheit nicht immer der Fall war. Wenn Sie sich unsicher sind, ob die gzip-Compression durch Ihren Hoster zugelassen wird, können Sie diesen entweder direkt kontaktieren oder alternativ eine manuelle Abfrage in die Wege leiten.
Bei einem Apache-Webserver überprüfen Sie die Modul-Einstellungen beispielsweise mithilfe einer einfachen phpinfo()
-Ausgabe. Der Eintrag HTTP_ACCEPT_ENCODING
verrät Ihnen, welche bzw. ob eine Komprimierungsmethode ausgewählt ist. Ist gzip verfügbar, haben Sie drei verschiedene Möglichkeiten, den Komprimierungshelfer für Ihre Zwecke zu nutzen.
Möglichkeit 1: gzip-Komprimierung in der .htaccess-Datei aktivieren
Über die .htaccess-Datei können Sie verzeichnisspezifische Einstellungen vornehmen und so Ihren Webserver in Echtzeit konfigurieren. Das wird dadurch möglich, dass die Konfigurationsdatei, die typischerweise im Root-Verzeichnis zu finden ist, bei jedem Request, der den Server erreicht, automatisch ausgelesen wird. Bei einigen Webhosting-Anbietern ist die .htaccess-Datei allerdings in einem anderen Ordner hinterlegt, ausgeblendet oder gar für den Zugriff gesperrt. In diesem Fall bleibt Ihnen nur die Option, den Hoster zu kontaktieren und die Freigabe zu erbitten. Können Sie die Konfigurationen vornehmen, schalten Sie die gzip-Compression über das Modul für den Deflate-Algorithmus (mod_deflate
) ein, indem Sie der Datei folgenden Code hinzufü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>
txtAuch für die beiden Module mod_gzip
und mod_deflate
benötigen Sie die Freigabe durch Ihren Webhoster.
Möglichkeit 2: gzip-Compression via PHP einschalten
Es ist möglich, das Komprimierungsverfahren mithilfe eines einfachen PHP-Eintrags zu aktivieren. Der Nachteil dabei: Der Code muss für jedes PHP-Dokument einzeln eingetragen werden. Sie sollten also nur auf diese Option zurückgreifen, wenn Sie nicht über die erforderlichen Berechtigungen verfügen, um die .htaccess-Datei bearbeiten zu können. Die Codezeile, die Sie an den Anfang der jeweiligen Datei setzen müssen, lautet folgendermaßen:
<?php
ob_start("ob_gzhandler");
?>
phpMöglichkeit 3: gzip per Plugin implementieren
Neben den beiden vorgestellten manuellen Lösungen existiert auch eine Variante, die von Ihnen nur einen minimalen Einrichtungsaufwand erfordert: Die Aktivierung der gzip-Komprimierung durch ein Plugin für das von Ihnen genutzte Content-Management-System. Solche nützlichen Erweiterungen, 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 Auflistung enthält drei der beliebtesten Plugins für die Weblog-Software:
- W3 Total Cache: Das WordPress-Plugin W3 Total Cache verspricht eine deutlich spürbare Verbesserung der Website-Performance. Neben diversen Caching-Mechanismen und speziellem Mobile-Support enthält die SEO- und Usability-Suite auch Optionen, um die gzip-Komprimierung zu aktivieren.
- WP Rocket: Auch bei WP Rocket handelt es sich um ein klassisches WordPress-Caching-Plugin. Die Erweiterung ist einfach zu bedienen und aktiviert alle wichtigen Funktionen zur Geschwindigkeitsoptimierung, einschließlich der gzip-Komprimierung, von Anfang an.
- WP Performance Score Booster: Über 10.000 aktive Installationen kann die Erweiterung WP Performance Score Booster bereits für sich verzeichnen. Mithilfe des Plugins aktivieren Sie gzip problemlos und komprimieren in der Folge effektiv die Inhalte Ihres Webprojekts wie Texte, HTML, JavaScript, CSS, XML und Co.
gzip auf einem NGINX-Webserver konfigurieren – Anleitung
Wenn Sie Ihre Website-Inhalte mithilfe eines NGINX-Webservers ausliefern, haben Sie ebenfalls die Möglichkeit, das gzip-Verfahren einzusetzen, um die Ladezeit Ihres Projekts zu verbessern. Hierfür müssen Sie lediglich das Modul ngx_http_gzip_module
entsprechend konfigurieren. Standardmäßig ist die Direktive gzip
, über die Sie den Komprimierungsdienst aktivieren bzw. deaktivieren, ausgeschaltet.
Um diese Einstellung zu ändern, öffnen Sie die zentrale Konfigurationsdatei 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öglichkeiten einiger weiterer Direktiven zur Konfiguration der NGINX-gzip-Komprimierung entnehmen:
Direktive | Syntax | Standardeinstellung | Beschreibung |
---|---|---|---|
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 Komprimierungsgrad an; mögliche Werte: 1–9 |
gzip_min_length
|
gzip_min_length Mindestlänge;
|
gzip_min_length 20;
|
Gibt die Mindestlänge einer verpackten 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 komprimierten Antwort beantwortet wird |
gzip_types
|
gzip_types Content-Typ;
|
gzip_types text/html;
|
Regelt, für welche Content-Typen die Komprimierung gelten soll (ebenfalls möglich: CSS, JSON, XML, …) |
So können Sie die gzip-Komprimierung testen
Wenn Sie die gzip-Compression für Ihre Webpräsenz konfiguriert haben, können Sie sich mithilfe verschiedener Tools davon überzeugen, dass das Verfahren wie gewünscht funktioniert und Ihr Webserver bei entsprechenden Anfragen komprimierte Inhalte ausliefert. Allen voran ist hierbei Google PageSpeed Insights zu empfehlen. Nach Eingabe einer beliebigen Seite Ihres Auftritts analysiert das Tool automatisch den Inhalt und informiert Sie anschließend über die Performance-Stärken und -Schwächen dieser Seite. Sie erhalten auf diese Weise u. a. eine Information darüber, ob die gzip-Komprimierung aktiviert ist. Einen einfachen gzip-Test können Sie alternativ mit dem HTTP Compression Test auf WhatsMyIP.org durchführen.