Jan Štráfelda - Průvodce online -projektem
Praha/Mělník  |  776 678 044  |  jan@strafelda.cz  |  Pošlete mi poptávku

Gzip

Gzip je program pro bezztrátovou kompresi (a také zpětnou dekompresi), který se od roku 1992 používá na unixových systémech. Někdy se tomu říká také komprimace. Zjednodušeně řečeno, gzip dělá soubory menšími.

Pro nás webaře je důležité, že gzip je též součástí internetového protokolu HTTP. A zároveň ho podporují moderní prohlížeče a také spousta softwarových serverů, jako jsou servery Oracle, Microsoft IIS, včetně v současnosti nejpoužívanějšího serveru jménem Apache. Stejně tak gzip funguje i na novějším protokolu HTTP/2.

K čemu je gzip užitečný

Gzip jednoduše umožňuje vývojářům webu nastavit server tak, aby data při vyžádání komprimoval (sbalil). Takto sbalená pak posílá do prohlížeče, který si je zase rozbalí. Velikost přenášených dat se tím redukuje přibližně o 70–80 %. To má významný vliv i na rychlost načítání webu, která se tím zvýší o 15–20 %. A to přesně chceme. Konkrétní hodnoty samozřejmě záleží na tom, z jakých souborů se daná stránka skládá a jak je celkově optimalizovaná na rychlost.

A takového efektu lze dostáhnout pouhými pár řádky v konfiguraci serveru. Člověk se až diví, proč statistiky stále tvrdí, že cca čvrtina webů gzip kompresi ještě vůbec nepoužívá. Možná se obávají o něco vyšších nároků na kapacity serveru. Na druhou stranu, spousta hostingů už mívá gzip kompresi zapnutou automaticky a vývojáři ji nemusí nijak nastavoat.

Jak gzip na serveru funguje

Ve chvíli, kdy si prohlížeč nebo jiný klient vyžádá na straně serveru určitý obsah pomocí protokolu HTTP, činí tak pomocí speciálních HTTP hlaviček. Jednou z nich je také hlavička Accept-Encoding, která obsahuje informaci o tom, jaké kompresní metody prohlížeč zvládá. Požadavek prohlížeče může obsahovat třeba toto:

Accept-Encoding: gzip, deflate

Server tedy vidí, že prohlížeč podporuje gzip. Místo aby daný soubor odeslal v surové podobě, komprimuje ho a do HTTP odpovědi na jeho začátku přidá speciální hlavičku Content-Encoding, kterou prohlížeč informuje, že data jsou zabalená pomocí metody gzip:

Content-Encoding: gzip

Ke komprimaci gzip využívá server algoritmus jménem Deflate, který určitě také běžně používáte při balení souborů do archívů zip. Jen formát obou souborů se trochu liší. Existují i účinnější kompresní algoritmy, ale gzip je extrémě rychlý. Tento algoritmus také obzvlášť dobře funguje na soubory, které obsahují velké množství mezer a opakujících se úryvků textu. Což je přesně případ většiny webových souborů.

Na jaké soubory se gzip hodí

Gzip je super na všechny soubory, které neobsahují vlastní kompresní algoritmy. Tedy nedává smysl ho používat na obrázky, videa, PDF soubory apod. Gzip naopak skvěle funguje na textové typy souborů, zejména na:

Jak si ověřím, že gzip na webu funguje

Nejjednodušší je zadat adresu stránky do některého z mnoha online nástrojů. Já třeba používám Gzip Test. Ale snadno si najdete i nějaké další, třeba googlením fráze „gzip checker“.

Jak nastavit gzip na serveru Apache

Pokud váš hosting automaticky gzip kompresi pro všechny potřebné soubory nezapíná, můžete zkusit do konfiguračního souboru .htaccess přidat následující řádky. Po restartu serveru by měly být příslušné soubory kompimované.

AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/json
AddOutputFilterByType DEFLATE text/javascript 
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE text/x-component
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE font/opentype

Říkáme tím serveru, na jaké typy souborů (tzv. MIME typy) si přejeme gzip kompresi aplikovat. Přidáním jednoho řádku si tak snadno můžete povolit gzip komresi konkrétního typu souboru, který třeba hosting nepodporuje automaticky.

Zaujal jsem vás? Přihlašte se do mailingu a mé další texty už vám neuniknou:

 

Zprávy posílám cca 8 × ročně. Odhlásit se můžete kdykoliv. Více informací.