Hvad er gzip, og hvordan bruges værktøjet?
Gzip-datakomprimeringsprogrammet er platformsuafhængigt og udbredt i webudvikling og webprojekter som den foretrukne komprimeringsløsning. Det kan nemt aktiveres og betjenes via kommandolinjeværktøjet, hvilket hjælper dig med at spare lagerplads og forbedre systemets ydeevne.
Hvordan fungerer gzip?
Gzip — en forkortelse for »GNU zip« — er baseret på den frit tilgængelige Deflate-algoritme, som kombinerer LZ77-komprimeringsmetoden (Lempel-Ziv 77) med Huffman-kodning. Ved hjælp af disse teknikker søger gzip-filer efter gentagne datastrenge. Hvis programmet støder på disse tilbagevendende sekvenser, erstatter det dem med et link til den streng, der optræder først. Længden af disse sekvenser er normalt begrænset til 32.000 byte. Hvis en tegnstreng ikke forekommer i de foregående 32.000 byte, gemmes den (uden at blive komprimeret) i gzip-filen, der får filtypenavnet .gz.
Proceduren er begrænset til enkelte filer, og derfor er pakkeprogrammet tar nødvendigt for at oprette såkaldte tarball-arkiver med filtypenavnene .tar.gz eller .tgz. Som standard slettes den oprindelige fil efter gzip primering (når den anvendes direkte på en fil). Du kan dog deaktivere denne automatiske adfærd ved at bruge den valgfri -k. For at udpakke komprimerede filer kan du enten bruge gunzip eller den relevante gzip.
Oversigt over gzip-syntaks og -kommandoer
Selvom der findes grafiske brugergrænseflader til forskellige platforme, er det naturligvis fuldt ud muligt at bruge gzip via kommandoer i terminalen eller kommandoprompten. Selv begyndere vil finde det overkommeligt, da gzip er et klassisk kommandolinjeværktøj, der er optimeret til denne type brug. Den generelle syntaks ser således ud:
gzip option file(s)bashDet er ikke nødvendigt at angive indstillinger. Hvis feltet efterlades tomt, bruger gzip blot standardindstillingerne. F.eks. er følgende enkle kommando tilstrækkelig til at oprette en komprimeret version af tekstfilen example.txt:
gzip example.txtbashHvis man senere vil udpakke filer eller angive indstillinger for komprimeringsniveau, lagringsplacering eller håndtering af den oprindelige fil, skal kommandoerne forsynes med de relevante angivelser. Nedenstående tabel giver et overblik over de gzip vigtigste kommandoer:
| Valgmulighed | Beskrivelse |
|---|---|
-1 … -9
|
Indstiller komprimeringsniveauet (1–9), hvor 1 giver det hurtigste og mindst komprimerede resultat, og 9 giver den bedste, men langsomste komprimering; standardniveauet er 5
|
-r
|
Gennemgår rekursivt mappen (inklusive alle undermapper) og komprimerer eller dekomprimerer alle filer i mappen |
-f
|
Tvinger gzip-komprimering og overskriver eksisterende filer med samme navn, hvis det er nødvendigt |
-d
|
Dekomprimerer den valgte fil til det aktuelle bibliotek |
-k
|
Forhindrer, at den oprindelige fil slettes |
-l
|
Viser oplysninger såsom komprimeringsforholdet for en komprimeret fil |
-c
|
Sender den komprimerede fil til standardoutput (typisk skærmen, der er forbundet til kommandolinjen) |
-q
|
Undertrykker alle gzip-meddelelser |
-t
|
Tester den komprimerede fils integritet |
-h
|
Viser alle tilgængelige indstillinger |
Anvendelsesmuligheder for gzip-komprimering
I dag er gzip stort set platformsuafhængigt og kan udvides efter behov, så længe det valgte projekt overholder GPL-licensen. På Linux-systemer er komprimeringsværktøjet som regel forudinstalleret eller let tilgængeligt via pakkehåndteringen. Den officielle gzip-hjemmeside tilbyder også versioner til macOS og Windows. Du kan til enhver tid bruge softwaren på disse systemer for at spare lagerplads.
Et andet vigtigt anvendelsesområde er internettet. Webservere som Apache har i årevis understøttet gzip-komprimering, og moderne browsere kan fortolke komprimerede filer og dekomprimere dem, når websiden vises. Det er her, gzip virkelig kommer til sin ret, for når funktionen er aktiveret, komprimerer webserveren automatisk både uploadet indhold og dynamisk genererede elementer på websiden på serveren. Dette kan reducere indlæsningstiden for websiden betydeligt som en del af den grundlæggende optimering af websiden. I mellemtiden håndterer browseren dekomprimeringen i baggrunden uden at forbruge ekstra båndbredde. Denne ydeevneforbedring kommer især mobilbrugere til gode, og den kan indirekte forbedre din hjemmesides placering i søgemaskinerne.
Sådan bruger du gzip-komprimering til dit Apache-webprojekt
Webservere tilbyder typisk gzip-komprimering som et modul, der blot skal aktiveres. I dag aktiverer mange webhostingudbydere denne funktion som standard, hvilket ikke altid var tilfældet tidligere. Hvis du er i tvivl om, hvorvidt din hostingudbyder understøtter gzip-komprimering, kan du enten kontakte dem direkte eller selv foretage en manuel kontrol.
På en Apache-webserver kan du kontrollere modulindstillingerne ved hjælp af en simpel phpinfo(). HTTP_ACCEPT_ENCODING viser, hvilken komprimeringsmetode der er valgt – eller om komprimering overhovedet er aktiveret. Hvis gzip er tilgængelig, har du tre forskellige muligheder for at anvende dette komprimeringsværktøj efter dine behov.
Mulighed 1: Aktiver gzip-komprimering i .htaccess-filen
Ved hjælp af .htaccess-filen kan du definere mappe-specifikke indstillinger og konfigurere din webserver i realtid. Dette fungerer, fordi konfigurationsfilen – som typisk ligger i rodmappen– automatisk læses ved hver eneste anmodning, der modtages af serveren. Hos nogle webhostingudbydere kan .htaccess dog være placeret i en anden mappe, være skjult eller endda have adgangsbegrænsninger. I så fald er din eneste mulighed at kontakte din hostingudbyder og anmode om adgang. Hvis du kan foretage ændringer, kan du aktivere gzip-komprimering ved hjælp af modulet til Deflate-algoritmen (mod_deflate) ved at tilføje følgende kode til .htaccess -filen:
<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>txtDu skal også have tilladelse fra din webhost for at kunne bruge modulerne mod_gzip og mod_deflate.
Mulighed 2: Aktivér gzip-komprimering via PHP
Det er muligt at aktivere gzip-komprimering ved hjælp af en simpel PHP-kodelinje. Ulempen er, at koden skal indsættes i hver enkelt PHP-fil. Derfor bør du kun benytte denne mulighed, hvis du ikke har de nødvendige rettigheder til at redigere .htaccess. Den kodelinje, der skal indsættes i starten af hver fil, ser således ud:
<?php
ob_start("ob_gzhandler");
?>phpMulighed 3: Implementer gzip via et plugin
Ud over disse to manuelle løsninger findes der også en variant, der kun kræver minimal indsats at sætte op: aktivering af gzip-komprimering ved hjælp af et plugin til det indholdsstyringssystem, du bruger. Sådanne nyttige udvidelser, som du kan installere på få minutter og tilpasse til dine behov, er primært beregnet til CMS’er som WordPress, der er baseret på PHP. Følgende liste indeholder tre af de mest populære plugins til denne blogsoftware:
- W3 Total Cache: WordPress-pluginet W3 Total Cache lover en mærkbart forbedret ydeevne på hjemmesiden. Ud over forskellige caching-mekanismer og dedikeret mobilunderstøttelse indeholder denne pakke til SEO og brugervenlighed også muligheder for at aktivere gzip-komprimering.
- WP Rocket: WP Rocket er et andet klassisk WordPress-caching-plugin. Det er nemt at bruge og aktiverer alle vigtige ydeevneoptimeringsfunktioner – herunder gzip-komprimering – lige fra starten.
- WP Performance Score Booster: WP Performance Score Booster-pluginet har allerede rundet 10.000 aktive installationer. Med dette plugin kan du nemt aktivere gzip og effektivt komprimere indholdet i dit webprojekt, herunder tekst, HTML, JavaScript, CSS, XML og mere.
Sådan konfigureres gzip på en NGINX-webserver trin for trin
Hvis du leverer indholdet på din hjemmeside via en NGINX-webserver, kan du også udnytte gzip-komprimering til at forbedre dit projekts indlæsningstid. For at gøre dette skal du blot konfigurere ngx_http_gzip_module. Som standard er gzip ivet – som aktiverer eller deaktiverer komprimeringstjenesten – slået fra.
For at ændre denne indstilling skal du åbne hovedkonfigurationsfilen nginx.conf og finde direktivet gzip. Erstat gzip off med gzip on. I nedenstående tabel beskrives formålet med og indstillingerne for nogle yderligere direktiver, der bruges til at konfigurere gzip-komprimering i NGINX:
| Direktiv | Syntaks | Standardindstilling | Beskrivelse | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Definerer antallet og størrelsen af buffere, der bruges under komprimeringsprocessen |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Indstiller komprimeringsniveauet; gyldige værdier: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Angiver den mindste længde (i byte) for en fil, der skal komprimeres | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Angiver den mindste HTTP-version, der kræves for komprimerede svar | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Bestemmer, hvilke indholdstyper der skal komprimeres (f.eks. CSS, JSON, XML) |
Sådan tester du gzip-komprimering
Når du har konfigureret gzip-komprimering til din hjemmeside, kan du bruge forskellige værktøjer til at kontrollere, at den fungerer korrekt, og at din webserver leverer komprimeret indhold som svar på anmodninger fra klienter. Et af de mest anbefalede værktøjer til dette formål er Google PageSpeed Insights. Du skal blot indtaste en vilkårlig side fra dit websted, så analyserer værktøjet automatisk indholdet og leverer en rapport om sidens styrker og svagheder. Blandt resultaterne finder du oplysninger om, hvorvidt gzip-komprimering er aktiveret.
Du kan også foretage en hurtig gzip-test ved hjælp af HTTP-komprimeringstesten på WhatsMyIP.org.