# 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:

```bash
gzip option file(s)
```

Det 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`:

```bash
gzip example.txt
```

Hvis 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:

<table>
  <thead>
    <tr>
      <th>Valgmulighed</th>
      <th>Beskrivelse</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>Indstiller komprimeringsniveauet (1–9), hvor `1` giver det hurtigste og mindst komprimerede resultat, og `9` giver den bedste, men langsomste komprimering; standardniveauet er `5`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Gennemgår rekursivt mappen (inklusive alle undermapper) og komprimerer eller dekomprimerer alle filer i mappen</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Tvinger gzip-komprimering og overskriver eksisterende filer med samme navn, hvis det er nødvendigt</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Dekomprimerer den valgte fil til det aktuelle bibliotek</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Forhindrer, at den oprindelige fil slettes</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Viser oplysninger såsom komprimeringsforholdet for en komprimeret fil</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Sender den komprimerede fil til standardoutput (typisk skærmen, der er forbundet til kommandolinjen)</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Undertrykker alle gzip-meddelelser</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Tester den komprimerede fils integritet</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Viser alle tilgængelige indstillinger</td>
    </tr>
  </tbody>
</table>

## 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](https://www.gzip.org/ "gzip.org – the official website of the compression program") 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:

```txt
<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>
```

Tip Du 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
<?php
ob_start("ob_gzhandler");
?>
```

### Mulighed 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](https://wordpress.org/plugins/w3-total-cache/ "Web performance optimization for WordPress projects: 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](https://wp-rocket.me/ "WP Rocket website")**: 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](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: WP Performance Score Booster Download")**: 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:

<table>
  <thead>
    <tr>
      <th>Direktiv</th>
      <th>Syntaks</th>
      <th>Standardindstilling</th>
      <th>Beskrivelse</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`gzip_buffers`</td>
      <td>`gzip_buffers number size;`</td>
      <td>`gzip_buffers 32 4k` \\</td>
      <td>`16 8k;`</td>
      <td>Definerer antallet og størrelsen af buffere, der bruges under komprimeringsprocessen</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level level;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Indstiller komprimeringsniveauet; gyldige værdier: 1–9</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_min_length`</td>
      <td>`gzip_min_length length;`</td>
      <td>`gzip_min_length 20;`</td>
      <td>Angiver den mindste længde (i byte) for en fil, der skal komprimeres</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version version;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Angiver den mindste HTTP-version, der kræves for komprimerede svar</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types content-type;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Bestemmer, hvilke indholdstyper der skal komprimeres (f.eks. CSS, JSON, XML)</td>
      <td></td>
    </tr>
  </tbody>
</table>

## 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](https://www.whatsmyip.org/http-compression-test/ "HTTP Compression Test – WhatsMyIP.org").


This is a markdown version of: [https://www.ionos.com/da-dk/digitalguide/server/know-how/hvad-er-gzip-og-hvilke-fordele-har-programmet/](https://www.ionos.com/da-dk/digitalguide/server/know-how/hvad-er-gzip-og-hvilke-fordele-har-programmet/) for AI/LLM consumption.