Da­ta­kom­pri­me­rings­pro­gram­met gzip är platt­form­so­be­ro­en­de och används ofta inom web­b­ut­veck­ling och webb­pro­jekt som en populär kom­pri­me­rings­lös­ning. Det kan enkelt aktiveras och användas via kom­man­do­rads­verk­ty­get, vilket hjälper dig att spara lag­rings­ut­rym­me och förbättra systemets prestanda.

Hur fungerar gzip?

Gzip — en för­kort­ning av ”GNU zip” — baseras på den fritt till­gäng­li­ga Deflate-al­go­rit­men, som kom­bi­ne­rar kom­pri­me­rings­me­to­den LZ77 (Lempel-Ziv 77) med Huffman-kodning. Med hjälp av dessa tekniker söker gzip-filer efter dubbla da­ta­sträng­ar. Om pro­gram­met stöter på dessa åter­kom­man­de sekvenser ersätter det dem med en länk till den sträng som först dyker upp. Längden på dessa sekvenser är van­ligt­vis begränsad till 32 000 byte. Om en tec­ken­sträng inte fö­re­kom­mer i de fö­re­gå­en­de 32 000 byten lagras den (utan att kom­pri­me­ras) i gzip-filen som får ändelsen .gz.

Pro­ce­du­ren är begränsad till enskilda filer, vilket är an­led­ning­en till att pack­pro­gram­met tar behövs för att skapa så kallade tarball-arkiv med än­del­ser­na .tar.gz eller .tgz. Som standard raderas den ur­sprung­li­ga filen efter gzip (när den tillämpas direkt på en fil). Du kan dock in­ak­ti­ve­ra denna au­to­ma­tis­ka funktion genom att använda den valfria -k -pa­ra­me­tern. För att de­kom­pri­me­ra kom­pri­me­ra­de filer kan du antingen använda gunzip -verktyget eller lämpligt gzip.

Översikt över gzip-syntax och kommandon

Även om det finns grafiska an­vän­dar­gräns­snitt till­gäng­li­ga för olika platt­for­mar, är det själv­klart fullt möjligt att använda gzip via kommandon i ter­mi­na­len eller kom­man­do­tol­ken. Även nybörjare kommer att finna det han­ter­bart, eftersom gzip är ett klassiskt kom­man­do­rads­verk­tyg som är optimerat för denna typ av an­vänd­ning. Den allmänna syntaxen följer denna form:

gzip option file(s)
bash

Det är inte nöd­vän­digt att ange al­ter­na­tiv. Om fältet lämnas tomt använder gzip helt enkelt stan­dardin­ställ­ning­ar­na. Till exempel räcker följande enkla kommando för att skapa en kom­pri­me­rad version av textfilen example.txt:

gzip example.txt
bash

För att senare packa upp filer eller ange in­struk­tio­ner för kom­pri­me­ringsni­vå, lag­rings­plats eller hur ori­ginal­fi­len ska hanteras krävs lämpliga spe­ci­fi­ka­tio­ner i kom­man­do­na. Följande tabell ger en översikt över de gzip vik­ti­gas­te kom­man­do­na:

Al­ter­na­tiv Be­skriv­ning
-1-9 Ställer in kom­pri­me­ringsni­vån (1–9), där 1 ger det snabbaste och minst kom­pri­me­ra­de re­sul­ta­tet och 9 ger den bästa men lång­sam­mas­te kom­pri­me­ring­en. Stan­dard­ni­vån är 5.
-r Skannar katalogen (inklusive alla un­der­ka­ta­lo­ger) rekursivt och kom­pri­me­rar eller de­kom­pri­me­rar alla filer som finns där.
-f Tvingar gzip-kom­pri­me­ring och skriver över be­fint­li­ga filer med samma namn om det behövs.
-d De­kom­pri­me­rar den valda filen till den aktuella katalogen.
-k För­hind­rar att ori­ginal­fi­len raderas.
-l Visar in­for­ma­tion såsom kom­pri­me­rings­gra­den för en kom­pri­me­rad fil.
-c Skriver ut den kom­pri­me­ra­de filen till stan­dardut­mat­ning­en (van­ligt­vis skärmen som är ansluten till kom­man­do­ra­den)
-q Un­der­tryc­ker alla gzip-med­de­lan­den.
-t Testar in­tegri­te­ten hos den kom­pri­me­ra­de filen.
-h Visar alla till­gäng­li­ga al­ter­na­tiv

An­vänd­nings­fall för gzip-kom­pri­me­ring

Idag är gzip nästan platt­form­so­be­ro­en­de och kan utökas efter behov, så länge det valda projektet följer GPL-licensen. På Linux-system är kom­pri­me­rings­verk­ty­get van­ligt­vis förinstal­le­rat eller lät­till­gäng­ligt via pa­ket­han­te­ra­ren. Den of­fi­ci­el­la gzip-webb­plat­sen erbjuder också versioner för macOS och Windows. Du kan använda pro­gram­va­ran på dessa system när som helst för att spara lag­rings­ut­rym­me.

Ett annat viktigt an­vänd­nings­om­rå­de är webben. Webb­serv­rar som Apache har stött gzip-kom­pri­me­ring i flera år, och moderna webb­lä­sa­re kan tolka kom­pri­me­ra­de filer och de­kom­pri­me­ra dem under webb­plats­ren­de­ring. Det är här gzip verkligen kommer till sin rätt, eftersom webb­ser­vern au­to­ma­tiskt kom­pri­me­rar både uppladdat innehåll och dynamiskt ge­ne­re­ra­de webb­plat­se­le­ment på servern när funk­tio­nen är aktiverad. Detta kan avsevärt minska webb­plat­sens ladd­nings­ti­der som en del av grund­läg­gan­de webb­platsop­ti­me­ring. Samtidigt hanterar webb­lä­sa­ren de­kom­pri­me­ring­en i bak­grun­den utan att förbruka yt­ter­li­ga­re bandbredd. Denna pre­stan­da­för­bätt­ring gynnar särskilt mobila användare och kan indirekt förbättra din webbplats ranking i sök­mo­to­rer­na.

Hur man använder gzip-kom­pri­me­ring för sitt Apache-webb­pro­jekt

Webb­serv­rar erbjuder van­ligt­vis gzip-kom­pri­me­ring som en modul som bara behöver aktiveras. Idag aktiverar många webb­ho­tell­le­ve­ran­tö­rer denna funktion som standard, vilket inte alltid var fallet tidigare. Om du är osäker på om gzip-kom­pri­me­ring stöds av din webb­ho­tell­le­ve­ran­tör kan du antingen kontakta dem direkt eller göra en manuell kontroll själv.

På en Apache-webb­ser­ver kan du kon­trol­le­ra mo­du­lin­ställ­ning­ar­na med hjälp av en enkel phpinfo(). HTTP_ACCEPT_ENCODING visar vilken kom­pri­me­rings­me­tod som är vald – eller om någon kom­pri­me­ring alls är aktiverad. Om gzip är till­gäng­ligt har du tre olika al­ter­na­tiv för att använda detta kom­pri­me­rings­verk­tyg efter dina behov.

Al­ter­na­tiv 1: Aktivera gzip-kom­pri­me­ring i .htaccess-filen

Med hjälp av .htaccess-filen kan du definiera ka­ta­logspe­ci­fi­ka in­ställ­ning­ar och kon­fi­gu­re­ra din webb­ser­ver i realtid. Detta fungerar eftersom kon­fi­gu­ra­tions­fi­len – som van­ligt­vis finns i rot­ka­ta­lo­gen – läsesau­to­ma­tiskt vid varje förfrågan som når servern. Hos vissa webb­ho­tell­le­ve­ran­tö­rer kan dock filen .htaccess finnas i en annan mapp, vara dold eller till och med ha begränsad åtkomst. I så fall är din enda möjlighet att kontakta din webb­ho­tell­le­ve­ran­tör och begära åtkomst. Om du kan göra ändringar kan du aktivera gzip-kom­pri­me­ring med hjälp av modulen för Deflate-al­go­rit­men (mod_deflate) genom att lägga till följande kod i filen .htaccess:

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

Du behöver också tillstånd från din webb­ho­tell­le­ve­ran­tör för att kunna använda modulerna mod_gzip och mod_deflate.

Al­ter­na­tiv 2: Aktivera gzip-kom­pri­me­ring via PHP

Det är möjligt att aktivera gzip-kom­pri­me­ring med ett enkelt PHP-uttryck. Nackdelen är att koden måste läggas till in­di­vi­du­ellt i varje PHP-fil. Därför bör du endast använda detta al­ter­na­tiv om du inte har nöd­vän­di­ga be­hö­rig­he­ter för att redigera filen .htaccess. Koden som ska placeras i början av varje fil är följande:

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

Al­ter­na­tiv 3: Im­ple­men­te­ra gzip via plugin

Utöver dessa två manuella lösningar finns det även en variant som kräver minimalt med arbete att in­stal­le­ra: aktivera gzip-kom­pri­me­ring med hjälp av ett plugin för det in­ne­hålls­han­te­rings­sy­stem du använder. Sådana an­vänd­ba­ra tillägg, som du kan in­stal­le­ra på några minuter och anpassa efter dina behov, är främst avsedda för CMS-system som WordPress, som baseras på PHP. Följande lista in­ne­hål­ler tre av de mest populära pluginsen för blogg­pro­gram­va­ran:

  • W3 Total Cache: WordPress-pluginet W3 Total Cache lovar en märkbart för­bätt­rad webb­plats­pre­stan­da. Förutom olika cach­nings­me­ka­nis­mer och dedikerat mobilstöd in­ne­hål­ler denna SEO- och an­vänd­bar­hetssvit även al­ter­na­tiv för att aktivera gzip-kom­pri­me­ring.
  • WP Rocket: WP Rocket är ett annat klassiskt WordPress-plugin för caching. Det är enkelt att använda och aktiverar alla viktiga pre­stan­da­op­ti­me­rings­funk­tio­ner – inklusive gzip-kom­pri­me­ring – redan från start.
  • WP Per­for­man­ce Score Booster: Pluginet WP Per­for­man­ce Score Booster har redan passerat 10 000 aktiva in­stal­la­tio­ner. Med detta plugin kan du enkelt aktivera gzip och effektivt kom­pri­me­ra in­ne­hål­let i ditt webb­pro­jekt, inklusive text, HTML, Ja­va­Script, CSS, XML och mer.

Hur man kon­fi­gu­re­rar gzip på en NGINX-webb­ser­ver steg för steg

Om du levererar in­ne­hål­let på din webbplats med hjälp av en NGINX -webb­ser­ver kan du också dra nytta av gzip-kom­pri­me­ring för att förbättra pro­jek­tets ladd­nings­tid. För att göra detta behöver du bara kon­fi­gu­re­ra ngx_http_gzip_module. Som standard är gzip, som aktiverar eller in­ak­ti­ve­rar kom­pri­me­rings­tjäns­ten, avstängt.

För att ändra denna in­ställ­ning öppnar du hu­vud­kon­fi­gu­ra­tions­fi­len nginx.conf och letar upp di­rek­ti­vet gzip. Ersätt gzip off med gzip on. I följande tabell förklaras syftet med och al­ter­na­ti­ven för några yt­ter­li­ga­re direktiv som används för att kon­fi­gu­re­ra gzip-kom­pri­me­ring i NGINX:

Direktiv Syntax Stan­dardin­ställ­ning Be­skriv­ning
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; De­fi­ni­e­rar antalet och storleken på buffertar som används under kom­pri­me­rings­pro­ces­sen.
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; Ställer in kom­pri­me­ringsni­vån; giltiga värden: 1–9.
gzip_min_length gzip_min_length length; gzip_min_length 20; Anger minsta längd (i byte) för en fil som ska kom­pri­me­ras.
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Anger den minsta HTTP-version som krävs för kom­pri­me­ra­de svar.
gzip_types gzip_types content-type; gzip_types text/html; Bestämmer vilka in­ne­håll­s­ty­per som ska kom­pri­me­ras (t.ex. CSS, JSON, XML).

Hur man testar gzip-kom­pri­me­ring

När du har kon­fi­gu­re­rat gzip-kom­pri­me­ring för din webbplats kan du använda olika verktyg för att kon­trol­le­ra att den fungerar korrekt och att din webb­ser­ver levererar kom­pri­me­rat innehåll som svar på kli­ent­för­fråg­ning­ar. Ett av de mest re­kom­men­de­ra­de verktygen för detta är Google PageSpeed Insights. Ange bara en valfri sida från din webbplats så ana­ly­se­rar verktyget au­to­ma­tiskt dess innehåll och ger en rapport om sidans styrkor och svagheter. Bland re­sul­ta­ten hittar du in­for­ma­tion om huruvida gzip-kom­pri­me­ring är aktiverad.

Al­ter­na­tivt kan du utföra ett snabbt gzip-test med hjälp av HTTP Com­pres­sion Test på WhatsMyIP.org.

Gå till huvudmeny