De gzip-software voor ge­ge­vens­com­pres­sie is plat­for­mon­af­han­ke­lijk en wordt veel gebruikt in we­bont­wik­ke­ling en web­pro­jec­ten als stan­daard­op­los­sing voor com­pres­sie. De software kan eenvoudig worden ge­ac­ti­veerd en bediend via de op­dracht­re­gel, waardoor u op­slag­ruim­te kunt besparen en de sys­teem­pres­ta­ties kunt ver­be­te­ren.

Hoe werkt gzip?

Gzip — kort voor ‘GNU zip’ — is gebaseerd op het vrij be­schik­ba­re Deflate-algoritme, dat de LZ77 (Lempel-Ziv 77) com­pres­sie­me­tho­de com­bi­neert met Huffman-codering. Met behulp van deze tech­nie­ken scannen gzip-bestanden naar dubbele ge­ge­vens­reek­sen. Als het programma deze te­rug­ke­ren­de reeksen tegenkomt, vervangt het ze door een link naar de reeks die als eerste ver­schijnt. De lengte van deze reeksen is meestal beperkt tot 32.000 bytes. Als een te­ken­reeks niet voorkomt in de voor­gaan­de 32.000 bytes, wordt deze (zonder com­pres­sie) op­ge­sla­gen in het gzip-bestand met de extensie .gz.

De procedure is beperkt tot in­di­vi­du­e­le bestanden, daarom is het pack-programma tar nodig om zo­ge­naam­de tarball-archieven te maken met de extensies: .tar.gz of .tgz. Standaard wordt het originele bestand na gzip ver­wij­derd (wanneer het recht­streeks op een bestand wordt toegepast). U kunt dit au­to­ma­ti­sche gedrag echter uit­scha­ke­len met behulp van de optionele -k parameter. Om ge­com­pri­meer­de bestanden te de­com­pri­me­ren, kunt u het hulp­pro­gram­ma gunzip of het juiste gzip commando gebruiken.

Overzicht van gzip-syntaxis en commando’s

Hoewel er grafische ge­brui­kers­in­ter­fa­ces be­schik­baar zijn voor ver­schil­len­de platforms, is het na­tuur­lijk ook mogelijk om gzip via commando’s in de terminal of op­dracht­prompt te gebruiken. Zelfs beginners zullen dit ge­mak­ke­lijk kunnen, aangezien gzip een klassieke op­dracht­re­gel­pro­gram­ma is dat voor dit soort gebruik is ge­op­ti­ma­li­seerd. De algemene syntaxis heeft de volgende vorm:

gzip option file(s)
bash

Het spe­ci­fi­ce­ren van opties is niet vereist. Als het veld leeg wordt gelaten, gebruikt gzip gewoon de stan­daard­in­stel­lin­gen. Het volgende een­vou­di­ge commando is bij­voor­beeld voldoende om een ge­com­pri­meer­de versie van het tekst­be­stand example.txt te maken:

gzip example.txt
bash

Om bestanden later uit te pakken of om in­struc­ties op te geven voor het com­pres­sie­ni­veau, de op­slag­lo­ca­tie of hoe het originele bestand moet worden behandeld, moeten de op­drach­ten de juiste spe­ci­fi­ca­ties bevatten. De volgende tabel geeft een overzicht van de gzip be­lang­rijk­ste op­drach­ten:

Optie Be­schrij­ving
-1-9 Stelt het com­pres­sie­ni­veau in (1–9), waarbij 1 het snelste en minst ge­com­pri­meer­de resultaat oplevert en 9 de beste maar traagste com­pres­sie biedt; het stan­daard­ni­veau is 5
-r Scant de map (inclusief alle submappen) recursief en com­pri­meert of de­com­pri­meert alle bestanden die deze bevat
-f Forceert gzip-com­pres­sie en over­schrijft indien nodig bestaande bestanden met dezelfde naam.
-d De­com­pri­meert het ge­se­lec­teer­de bestand naar de huidige map
-k Voorkomt dat het originele bestand wordt ver­wij­derd
-l Geeft in­for­ma­tie weer, zoals de com­pres­sie­ver­hou­ding van een ge­com­pri­meerd bestand.
-c Voert het ge­com­pri­meer­de bestand uit naar de stan­daard­uit­voer (meestal het scherm dat is aan­ge­slo­ten op de op­dracht­re­gel)
-q On­der­drukt alle gzip-berichten
-t Test de in­te­gri­teit van het ge­com­pri­meer­de bestand.
-h Geeft een overzicht van alle be­schik­ba­re opties

Ge­bruiks­sce­na­rio’s voor gzip-com­pres­sie

Te­gen­woor­dig is gzip vrijwel plat­for­mon­af­han­ke­lijk en kan het naar behoefte worden uit­ge­breid, zolang het gekozen project voldoet aan de GPL-licentie. Op Linux-systemen is het com­pres­sie­pro­gram­ma meestal vooraf ge­ïn­stal­leerd of direct be­schik­baar via de pak­ket­be­heer­der. De officiële gzip-website biedt ook versies voor macOS en Windows. U kunt de software op deze systemen op elk moment gebruiken om op­slag­ruim­te te besparen.

Een ander be­lang­rijk toe­pas­sings­ge­bied is het web. Web­ser­vers zoals Apache on­der­steu­nen al jaren gzip-com­pres­sie en moderne browsers kunnen ge­com­pri­meer­de bestanden in­ter­pre­te­ren en de­com­pri­me­ren tijdens het weergeven van websites. Hier komt gzip volledig tot zijn recht, want wanneer deze functie is in­ge­scha­keld, com­pri­meert de webserver au­to­ma­tisch zowel geüploade inhoud als dynamisch ge­ge­ne­reer­de website-elementen op de server. Dit kan de laad­tij­den van websites aan­zien­lijk verkorten als onderdeel van ba­sisop­ti­ma­li­sa­tie van websites. On­der­tus­sen voert de browser de de­com­pres­sie op de ach­ter­grond uit zonder extra band­breed­te te ver­brui­ken. Deze pres­ta­tie­ver­be­te­ring komt vooral mobiele ge­brui­kers ten goede en kan indirect de positie van uw website in zoek­ma­chi­nes ver­be­te­ren.

Hoe u gzip-com­pres­sie kunt gebruiken voor uw Apache-web­pro­ject

Web­ser­vers bieden doorgaans gzip-com­pres­sie aan als een module die een­vou­dig­weg moet worden in­ge­scha­keld. Te­gen­woor­dig activeren veel web­hos­ting­pro­vi­ders deze functie standaard, terwijl dat in het verleden niet altijd het geval was. Als u niet zeker weet of gzip-com­pres­sie door uw hos­ting­pro­vi­der wordt on­der­steund, kunt u recht­streeks contact met hen opnemen of zelf een hand­ma­ti­ge controle uitvoeren.

Op een Apache-webserver kunt u de module-in­stel­lin­gen con­tro­le­ren met behulp van een een­vou­di­ge phpinfo() voer. De HTTP_ACCEPT_ENCODING -invoer toont u welke com­pres­sie­me­tho­de is ge­se­lec­teerd — of dat er überhaupt com­pres­sie is in­ge­scha­keld. Als gzip be­schik­baar is, hebt u drie ver­schil­len­de opties om deze com­pres­sie­tool naar uw behoeften te gebruiken.

Optie 1: Schakel gzip-com­pres­sie in het .htaccess-bestand in

Met behulp van het .htaccess-bestand kunt u map-spe­ci­fie­ke in­stel­lin­gen de­fi­ni­ë­ren en uw webserver in realtime con­fi­gu­re­ren. Dit werkt omdat het con­fi­gu­ra­tie­be­stand, dat zich doorgaans in de hoofdmapbevindt **,**au­to­ma­tisch wordtgelezen bij elk verzoek dat de server bereikt. Bij sommige web­hos­ting­pro­vi­ders kan het .htaccess zich echter in een andere map bevinden, verborgen zijn of zelfs beperkt toe­gan­ke­lijk zijn. In dat geval kunt u alleen contact opnemen met uw hos­ting­pro­vi­der en om toegang vragen. Als u wij­zi­gin­gen kunt aan­bren­gen, kunt u gzip-com­pres­sie in­scha­ke­len met behulp van de module voor het Deflate-algoritme (mod_deflate) door de volgende code toe te voegen aan het .htaccess -bestand:

<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
Tip

Je hebt ook toe­stem­ming van je webhost nodig om de modules mod_gzip en mod_deflate te gebruiken.

Optie 2: gzip-com­pres­sie in­scha­ke­len via PHP

Het is mogelijk om gzip-com­pres­sie te activeren met behulp van een een­vou­di­ge PHP-in­struc­tie. Het nadeel is dat de code af­zon­der­lijk aan elk PHP-bestand moet worden toe­ge­voegd. Gebruik deze optie daarom alleen als u niet over de benodigde rechten beschikt om het .htaccess bestand te bewerken. De regel code die aan het begin van elk bestand moet worden geplaatst, is als volgt:

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

Optie 3: gzip im­ple­men­te­ren via plug-in

Naast deze twee hand­ma­ti­ge op­los­sin­gen is er ook een variant die slechts minimale in­span­ning vereist om in te stellen: het activeren van de gzip-com­pres­sie met behulp van een plug-in voor het con­tent­ma­na­ge­ment­sys­teem dat u gebruikt. Der­ge­lij­ke handige extensies, die u binnen enkele minuten kunt in­te­gre­ren en aanpassen aan uw behoeften, zijn voor­na­me­lijk bedoeld voor CMS’en zoals WordPress, die zijn gebaseerd op PHP. De volgende lijst bevat drie van de po­pu­lair­ste plug-ins voor de we­blogsoft­wa­re:

  • W3 Total Cache: De WordPress-plug-in W3 Total Cache belooft een merkbaar ver­be­ter­de web­si­te­pres­ta­tie. Naast ver­schil­len­de ca­ching­me­cha­nis­men en speciale mobiele on­der­steu­ning bevat deze SEO- en ge­bruiks­vrien­de­lijk­heids­sui­te ook opties om gzip-com­pres­sie in te schakelen.
  • WP Rocket: WP Rocket is een andere klassieke WordPress-ca­ching­plu­gin. Het is eenvoudig te gebruiken en activeert vanaf het begin alle be­lang­rij­ke pres­ta­tie­op­ti­ma­li­sa­tie­func­ties, waaronder gzip-com­pres­sie.
  • WP Per­for­man­ce Score Booster: De WP Per­for­man­ce Score Booster-plug-in heeft al meer dan 10.000 actieve in­stal­la­ties. Met deze plug-in kunt u eenvoudig gzip in­scha­ke­len en de inhoud van uw web­pro­ject efficiënt com­pri­me­ren, inclusief tekst, HTML, Ja­vaScript, CSS, XML en meer.

Hoe gzip stap voor stap con­fi­gu­re­ren op een NGINX-webserver

Als u uw website-inhoud levert via een NGINX -webserver, kunt u ook ge­bruik­ma­ken van gzip-com­pres­sie om de laadtijd van uw project te ver­be­te­ren. Hiervoor hoeft u alleen maar de ngx_http_gzip_module te con­fi­gu­re­ren. Standaard is de gzip, die de com­pres­sie­ser­vi­ce in- of uit­scha­kelt, uit­ge­scha­keld.

Om deze in­stel­ling te wijzigen, opent u het hoofd­con­fi­gu­ra­tie­be­stand nginx.conf en zoekt u de gzip. Vervang gzip off door gzip on. In de volgende tabel worden het doel en de opties van enkele aan­vul­len­de richt­lij­nen voor het con­fi­gu­re­ren van gzip-com­pres­sie in NGINX uitgelegd:

Richtlijn Syntaxis Stan­daard­in­stel­ling Be­schrij­ving
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; Bepaalt het aantal en de grootte van de buffers die tijdens het com­pres­sie­pro­ces worden gebruikt
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; Stelt het com­pres­sie­ni­veau in; geldige waarden: 1–9
gzip_min_length gzip_min_length length; gzip_min_length 20; Spe­ci­fi­ceert de minimale lengte (in bytes) voor een bestand dat moet worden ge­com­pri­meerd.
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Spe­ci­fi­ceert de minimale HTTP-versie die vereist is voor ge­com­pri­meer­de reacties.
gzip_types gzip_types content-type; gzip_types text/html; Bepaalt welke in­houds­ty­pen moeten worden ge­com­pri­meerd (bijv. CSS, JSON, XML)

Hoe gzip-com­pres­sie te testen

Zodra u gzip-com­pres­sie voor uw website hebt ge­con­fi­gu­reerd, kunt u ver­schil­len­de tools gebruiken om te con­tro­le­ren of deze correct werkt en of uw webserver ge­com­pri­meer­de inhoud levert in reactie op verzoeken van klanten. Een van de meest aan­be­vo­len tools hiervoor is Google PageSpeed Insights. Voer gewoon een wil­le­keu­ri­ge pagina van uw site in en de tool ana­ly­seert au­to­ma­tisch de inhoud ervan en geeft een rapport over de sterke en zwakke punten van de pagina. Onder de re­sul­ta­ten vindt u in­for­ma­tie over of gzip-com­pres­sie is in­ge­scha­keld.

Je kunt ook een snelle gzip-test uitvoeren met behulp van de HTTP-com­pres­sie­test op WhatsMyIP.org.

Ga naar hoofdmenu