Softvér na kompresiu dát gzip je multiplatformový a široko používaný vo vývoji webových stránok a webových projektoch ako preferované riešenie kompresie. Dá sa ľahko aktivovať a ovládať prostredníctvom nástroja príkazového riadku, čím vám pomáha šetriť úložný priestor a zlepšovať výkon systému.

Ako funguje gzip?

Gzip — skratka pre „GNU zip“ — je založený na voľne dostupnom algoritme Deflate, ktorý kombinuje kompresnú metódu LZ77 (Lempel-Ziv 77) s Huffmanovým kódovaním. Pomocou týchto techník súbory gzip vyhľadávajú duplicitné reťazce údajov. Ak program narazí na tieto opakujúce sa sekvencie, nahradí ich odkazom na reťazec, ktorý sa objaví ako prvý. Dĺžka týchto sekvencií je zvyčajne obmedzená na 32 000 bajtov. Ak sa reťazec znakov neobjaví v predchádzajúcich 32 000 bajtoch, uloží sa (bez kompresie) do súboru gzip, ktorý dostane príponu .gz.

Postup je obmedzený na jednotlivé súbory, preto je potrebný program na balenie, tar, na vytvorenie takzvaných tarball archívov s koncovkami: .tar.gz alebo .tgz. Predvolene sa pôvodný súbor po kompresii gzip (pri priamom použití na súbor) vymaže. Toto automatické správanie však môžete deaktivovať pomocou voliteľného parametra -k. Na dekompresiu komprimovaných súborov môžete použiť buď nástroj gunzip, alebo príslušný príkaz gzip.

Prehľad syntaxe a príkazov gzip

Hoci sú k dispozícii grafické používateľské rozhrania pre rôzne platformy, používanie gzip prostredníctvom príkazov v termináli alebo príkazovom riadku je samozrejme úplne možné. Aj začiatočníci to zvládnu, pretože gzip je klasický nástroj príkazového riadku optimalizovaný pre tento druh použitia. Všeobecná syntax má túto formu:

gzip option file(s)
bash

Špecifikovanie možností nie je potrebné. Ak pole zostane prázdne, gzip jednoducho použije svoje predvolené nastavenia. Napríklad nasledujúci jednoduchý príkaz stačí na vytvorenie komprimovanej verzie textového súboru example.txt:

gzip example.txt
bash

Ak chcete súbory neskôr dekomprimovať alebo určiť pokyny pre úroveň kompresie, umiestnenie úložiska alebo spôsob spracovania pôvodného súboru, príkazy budú vyžadovať príslušné špecifikácie. V nasledujúcej tabuľke je uvedený prehľad gzip najdôležitejších príkazov:

Možnosť Popis
-1-9 Nastavuje úroveň kompresie (1–9), pričom 1 poskytuje najrýchlejší a najmenej komprimovaný výsledok a 9 ponúka najlepšiu, ale najpomalšiu kompresiu; predvolená úroveň je 5
-r Rekurzívne prehľadáva adresár (vrátane všetkých podadresárov) a komprimuje alebo dekomprimuje všetky obsiahnuté súbory
-f Vynúti kompresiu gzip a v prípade potreby prepíše existujúce súbory s rovnakým názvom.
-d Dekomprimuje vybraný súbor do aktuálneho adresára.
-k Zabráni vymazaniu pôvodného súboru.
-l Zobrazuje informácie, ako napríklad kompresný pomer komprimovaného súboru.
-c Vypíše komprimovaný súbor do štandardného výstupu (zvyčajne na obrazovku pripojenú k príkazovému riadku)
-q Potlačí všetky správy gzip.
-t Testuje integritu komprimovaného súboru.
-h Zobrazí zoznam všetkých dostupných možností.

Prípady použitia kompresie gzip

Dnes je gzip takmer nezávislý od platformy a môže byť podľa potreby rozšírený, pokiaľ zvolený projekt spĺňa podmienky licencie GPL. V systémoch Linux je kompresný nástroj zvyčajne predinštalovaný alebo ľahko dostupný prostredníctvom správcu balíkov. Oficiálna webová stránka gzip ponúka aj verzie pre macOS a Windows. Tento softvér môžete kedykoľvek použiť v týchto systémoch na ušetrenie úložného priestoru.

Ďalšou kľúčovou oblasťou použitia je web. Webové servery ako Apache už roky podporujú kompresiu gzip a moderné prehliadače sú schopné interpretovať komprimované súbory a dekomprimovať ich počas renderovania webových stránok. Tu sa gzip môže naplno prejaviť, pretože keď je táto funkcia povolená, webový server automaticky komprimuje nielen nahraný obsah, ale aj dynamicky generované prvky webových stránok na serveri. To môže výrazne skrátiť čas načítania webových stránok ako súčasť základnej optimalizácie webových stránok. Prehliadač medzitým spracováva dekompresiu na pozadí bez spotrebovania dodatočnej šírky pásma. Toto zvýšenie výkonu je prospešné najmä pre mobilných používateľov a môže nepriamo zlepšiť umiestnenie vašej webovej stránky vo vyhľadávačoch.

Ako používať kompresiu gzip pre váš webový projekt Apache

Webové servery zvyčajne ponúkajú kompresiu gzip ako modul, ktorý stačí jednoducho aktivovať. Dnes mnoho poskytovateľov webhostingu aktivuje túto funkciu automaticky, zatiaľ čo v minulosti to tak nebolo vždy. Ak si nie ste istí, či váš poskytovateľ hostingu podporuje kompresiu gzip, môžete ho kontaktovať priamo alebo vykonať ručnú kontrolu sami.

Na webovom serveri Apache môžete skontrolovať nastavenia modulu pomocou jednoduchého výstupu phpinfo(). Položka HTTP_ACCEPT_ENCODING vám ukáže, ktorá metóda kompresie je vybraná – alebo či je kompresia vôbec povolená. Ak je k dispozícii gzip, máte tri rôzne možnosti, ako tento kompresný nástroj použiť podľa svojich potrieb.

Možnosť 1: Povoliť kompresiu gzip v súbore .htaccess

Pomocou súboru .htaccess môžete definovať nastavenia špecifické pre adresáre a konfigurovať svoj webový server v reálnom čase. Funguje to preto, lebo konfiguračný súbor, ktorý sa zvyčajne nachádza v koreňovom adresári, sa automaticky načíta pri každej požiadavke, ktorá dorazí na server. U niektorých poskytovateľov webhostingu však môže byť .htaccess umiestnený v inej zložke, skrytý alebo dokonca obmedzený na prístup. V takom prípade je vašou jedinou možnosťou kontaktovať poskytovateľa hostingu a požiadať o prístup. Ak máte možnosť vykonávať zmeny, môžete povoliť kompresiu gzip pomocou modulu pre algoritmus Deflate (mod_deflate) pridaním nasledujúceho kódu do súboru .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
Tip

Na používanie modulov mod_gzip a mod_deflate budete potrebovať aj povolenie svojho webhostingu.

Možnosť 2: Aktivujte kompresiu gzip prostredníctvom PHP

Kompresiu gzip je možné aktivovať pomocou jednoduchého príkazu PHP. Nevýhodou je, že kód musí byť pridaný individuálne do každého súboru PHP. Preto by ste túto možnosť mali použiť len v prípade, ak nemáte potrebné oprávnenia na úpravu súboru .htaccess. Riadok kódu, ktorý je potrebné umiestniť na začiatok každého súboru, je nasledujúci:

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

Možnosť 3: Implementácia gzip prostredníctvom pluginu

Okrem týchto dvoch manuálnych riešení existuje aj varianta, ktorá vyžaduje len minimálne úsilie pri nastavovaní: aktivácia kompresie gzip pomocou pluginu pre systém správy obsahu, ktorý používate. Takéto užitočné rozšírenia, ktoré môžete vložiť za pár minút a prispôsobiť svojim potrebám, sú určené predovšetkým pre CMS ako WordPress, ktoré sú založené na PHP. Nasledujúci zoznam obsahuje tri najpopulárnejšie pluginy pre softvér weblogov:

  • W3 Total Cache: Plugin W3 Total Cache pre WordPress sľubuje výrazné zlepšenie výkonu webových stránok. Okrem rôznych mechanizmov ukladania do vyrovnávacej pamäte a špecializovanej podpory pre mobilné zariadenia obsahuje táto sada nástrojov pre SEO a použiteľnosť aj možnosti na povolenie kompresie gzip.
  • WP Rocket: WP Rocket je ďalší klasický plugin WordPress na ukladanie do vyrovnávacej pamäte. Je ľahko použiteľný a aktivuje všetky kľúčové funkcie optimalizácie výkonu – vrátane kompresie gzip – hneď od začiatku.
  • WP Performance Score Booster: Plugin WP Performance Score Booster už prekročil 10 000 aktívnych inštalácií. S týmto pluginom môžete ľahko aktivovať gzip a efektívne komprimovať obsah vášho webového projektu, vrátane textu, HTML, JavaScriptu, CSS, XML a ďalších.

Ako krok za krokom nakonfigurovať gzip na webovom serveri NGINX

Ak dodávate obsah svojej webovej stránky pomocou webového servera NGINX, môžete tiež využiť kompresiu gzip na skrátenie času načítania vášho projektu. Na to stačí nakonfigurovať ngx_http_gzip_module. Predvolene je smernica gzip, ktorá zapína alebo vypína kompresnú službu, vypnutá.

Ak chcete zmeniť toto nastavenie, otvorte hlavný konfiguračný súbor nginx.conf a vyhľadajte smernicu gzip. Nahraďte gzip off za gzip on. V nasledujúcej tabuľke sú vysvetlené účely a možnosti niektorých dodatočných smerníc používaných na konfiguráciu kompresie gzip v NGINX:

Smernica Syntax Predvolené nastavenie Popis
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; Definuje počet a veľkosť vyrovnávacích pamätí používaných počas procesu kompresie.
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; Nastavuje úroveň kompresie; platné hodnoty: 1–9
gzip_min_length gzip_min_length length; gzip_min_length 20; Určuje minimálnu dĺžku (v bajtoch) súboru, ktorý sa má komprimovať.
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Určuje minimálnu verziu HTTP požadovanú pre komprimované odpovede.
gzip_types gzip_types content-type; gzip_types text/html; Určuje, ktoré typy obsahu by mali byť komprimované (napr. CSS, JSON, XML).

Ako otestovať kompresiu gzip

Po nakonfigurovaní kompresie gzip pre vašu webovú stránku môžete použiť rôzne nástroje na overenie, či funguje správne a či váš webový server dodáva komprimovaný obsah v odpovedi na požiadavky klientov. Jedným z najviac odporúčaných nástrojov na tento účel je Google PageSpeed Insights. Stačí zadať ľubovoľnú stránku z vašej webovej stránky a nástroj automaticky analyzuje jej obsah a poskytne správu o silných a slabých stránkach výkonu stránky. Medzi výsledkami nájdete informácie o tom, či je kompresia gzip povolená.

Prípadne môžete vykonať rýchly test gzip pomocou testu kompresie HTTP na stránke WhatsMyIP.org.

Prejsť na hlavné menu