Vad är gzip och hur används verktyget?
Datakomprimeringsprogrammet gzip är plattformsoberoende och används ofta inom webbutveckling och webbprojekt som en populär komprimeringslösning. Det kan enkelt aktiveras och användas via kommandoradsverktyget, vilket hjälper dig att spara lagringsutrymme och förbättra systemets prestanda.
Hur fungerar gzip?
Gzip — en förkortning av ”GNU zip” — baseras på den fritt tillgängliga Deflate-algoritmen, som kombinerar komprimeringsmetoden LZ77 (Lempel-Ziv 77) med Huffman-kodning. Med hjälp av dessa tekniker söker gzip-filer efter dubbla datasträngar. Om programmet stöter på dessa återkommande sekvenser ersätter det dem med en länk till den sträng som först dyker upp. Längden på dessa sekvenser är vanligtvis begränsad till 32 000 byte. Om en teckensträng inte förekommer i de föregående 32 000 byten lagras den (utan att komprimeras) i gzip-filen som får ändelsen .gz.
Proceduren är begränsad till enskilda filer, vilket är anledningen till att packprogrammet tar behövs för att skapa så kallade tarball-arkiv med ändelserna .tar.gz eller .tgz. Som standard raderas den ursprungliga filen efter gzip (när den tillämpas direkt på en fil). Du kan dock inaktivera denna automatiska funktion genom att använda den valfria -k -parametern. För att dekomprimera komprimerade filer kan du antingen använda gunzip -verktyget eller lämpligt gzip.
Översikt över gzip-syntax och kommandon
Även om det finns grafiska användargränssnitt tillgängliga för olika plattformar, är det självklart fullt möjligt att använda gzip via kommandon i terminalen eller kommandotolken. Även nybörjare kommer att finna det hanterbart, eftersom gzip är ett klassiskt kommandoradsverktyg som är optimerat för denna typ av användning. Den allmänna syntaxen följer denna form:
gzip option file(s)bashDet är inte nödvändigt att ange alternativ. Om fältet lämnas tomt använder gzip helt enkelt standardinställningarna. Till exempel räcker följande enkla kommando för att skapa en komprimerad version av textfilen example.txt:
gzip example.txtbashFör att senare packa upp filer eller ange instruktioner för komprimeringsnivå, lagringsplats eller hur originalfilen ska hanteras krävs lämpliga specifikationer i kommandona. Följande tabell ger en översikt över de gzip viktigaste kommandona:
| Alternativ | Beskrivning |
|---|---|
-1 … -9
|
Ställer in komprimeringsnivån (1–9), där 1 ger det snabbaste och minst komprimerade resultatet och 9 ger den bästa men långsammaste komprimeringen. Standardnivån är 5.
|
-r
|
Skannar katalogen (inklusive alla underkataloger) rekursivt och komprimerar eller dekomprimerar alla filer som finns där. |
-f
|
Tvingar gzip-komprimering och skriver över befintliga filer med samma namn om det behövs. |
-d
|
Dekomprimerar den valda filen till den aktuella katalogen. |
-k
|
Förhindrar att originalfilen raderas. |
-l
|
Visar information såsom komprimeringsgraden för en komprimerad fil. |
-c
|
Skriver ut den komprimerade filen till standardutmatningen (vanligtvis skärmen som är ansluten till kommandoraden) |
-q
|
Undertrycker alla gzip-meddelanden. |
-t
|
Testar integriteten hos den komprimerade filen. |
-h
|
Visar alla tillgängliga alternativ |
Användningsfall för gzip-komprimering
Idag är gzip nästan plattformsoberoende och kan utökas efter behov, så länge det valda projektet följer GPL-licensen. På Linux-system är komprimeringsverktyget vanligtvis förinstallerat eller lättillgängligt via pakethanteraren. Den officiella gzip-webbplatsen erbjuder också versioner för macOS och Windows. Du kan använda programvaran på dessa system när som helst för att spara lagringsutrymme.
Ett annat viktigt användningsområde är webben. Webbservrar som Apache har stött gzip-komprimering i flera år, och moderna webbläsare kan tolka komprimerade filer och dekomprimera dem under webbplatsrendering. Det är här gzip verkligen kommer till sin rätt, eftersom webbservern automatiskt komprimerar både uppladdat innehåll och dynamiskt genererade webbplatselement på servern när funktionen är aktiverad. Detta kan avsevärt minska webbplatsens laddningstider som en del av grundläggande webbplatsoptimering. Samtidigt hanterar webbläsaren dekomprimeringen i bakgrunden utan att förbruka ytterligare bandbredd. Denna prestandaförbättring gynnar särskilt mobila användare och kan indirekt förbättra din webbplats ranking i sökmotorerna.
Hur man använder gzip-komprimering för sitt Apache-webbprojekt
Webbservrar erbjuder vanligtvis gzip-komprimering som en modul som bara behöver aktiveras. Idag aktiverar många webbhotellleverantörer denna funktion som standard, vilket inte alltid var fallet tidigare. Om du är osäker på om gzip-komprimering stöds av din webbhotellleverantör kan du antingen kontakta dem direkt eller göra en manuell kontroll själv.
På en Apache-webbserver kan du kontrollera modulinställningarna med hjälp av en enkel phpinfo(). HTTP_ACCEPT_ENCODING visar vilken komprimeringsmetod som är vald – eller om någon komprimering alls är aktiverad. Om gzip är tillgängligt har du tre olika alternativ för att använda detta komprimeringsverktyg efter dina behov.
Alternativ 1: Aktivera gzip-komprimering i .htaccess-filen
Med hjälp av .htaccess-filen kan du definiera katalogspecifika inställningar och konfigurera din webbserver i realtid. Detta fungerar eftersom konfigurationsfilen – som vanligtvis finns i rotkatalogen – läsesautomatiskt vid varje förfrågan som når servern. Hos vissa webbhotellleverantö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 webbhotellleverantör och begära åtkomst. Om du kan göra ändringar kan du aktivera gzip-komprimering med hjälp av modulen för Deflate-algoritmen (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>txtDu behöver också tillstånd från din webbhotellleverantör för att kunna använda modulerna mod_gzip och mod_deflate.
Alternativ 2: Aktivera gzip-komprimering via PHP
Det är möjligt att aktivera gzip-komprimering med ett enkelt PHP-uttryck. Nackdelen är att koden måste läggas till individuellt i varje PHP-fil. Därför bör du endast använda detta alternativ om du inte har nödvändiga behörigheter för att redigera filen .htaccess. Koden som ska placeras i början av varje fil är följande:
<?php
ob_start("ob_gzhandler");
?>phpAlternativ 3: Implementera gzip via plugin
Utöver dessa två manuella lösningar finns det även en variant som kräver minimalt med arbete att installera: aktivera gzip-komprimering med hjälp av ett plugin för det innehållshanteringssystem du använder. Sådana användbara tillägg, som du kan installera 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 innehåller tre av de mest populära pluginsen för bloggprogramvaran:
- W3 Total Cache: WordPress-pluginet W3 Total Cache lovar en märkbart förbättrad webbplatsprestanda. Förutom olika cachningsmekanismer och dedikerat mobilstöd innehåller denna SEO- och användbarhetssvit även alternativ för att aktivera gzip-komprimering.
- WP Rocket: WP Rocket är ett annat klassiskt WordPress-plugin för caching. Det är enkelt att använda och aktiverar alla viktiga prestandaoptimeringsfunktioner – inklusive gzip-komprimering – redan från start.
- WP Performance Score Booster: Pluginet WP Performance Score Booster har redan passerat 10 000 aktiva installationer. Med detta plugin kan du enkelt aktivera gzip och effektivt komprimera innehållet i ditt webbprojekt, inklusive text, HTML, JavaScript, CSS, XML och mer.
Hur man konfigurerar gzip på en NGINX-webbserver steg för steg
Om du levererar innehållet på din webbplats med hjälp av en NGINX -webbserver kan du också dra nytta av gzip-komprimering för att förbättra projektets laddningstid. För att göra detta behöver du bara konfigurera ngx_http_gzip_module. Som standard är gzip, som aktiverar eller inaktiverar komprimeringstjänsten, avstängt.
För att ändra denna inställning öppnar du huvudkonfigurationsfilen nginx.conf och letar upp direktivet gzip. Ersätt gzip off med gzip on. I följande tabell förklaras syftet med och alternativen för några ytterligare direktiv som används för att konfigurera gzip-komprimering i NGINX:
| Direktiv | Syntax | Standardinställning | Beskrivning | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Definierar antalet och storleken på buffertar som används under komprimeringsprocessen. |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Ställer in komprimeringsnivå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 komprimeras. | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Anger den minsta HTTP-version som krävs för komprimerade svar. | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Bestämmer vilka innehållstyper som ska komprimeras (t.ex. CSS, JSON, XML). |
Hur man testar gzip-komprimering
När du har konfigurerat gzip-komprimering för din webbplats kan du använda olika verktyg för att kontrollera att den fungerar korrekt och att din webbserver levererar komprimerat innehåll som svar på klientförfrågningar. Ett av de mest rekommenderade verktygen för detta är Google PageSpeed Insights. Ange bara en valfri sida från din webbplats så analyserar verktyget automatiskt dess innehåll och ger en rapport om sidans styrkor och svagheter. Bland resultaten hittar du information om huruvida gzip-komprimering är aktiverad.
Alternativt kan du utföra ett snabbt gzip-test med hjälp av HTTP Compression Test på WhatsMyIP.org.