Komprese Gzip a Brotli
Komprese na webu s Gzip a Brotli: máte to dobře?
V nejobecnější rovině se jedná o zpracování počítačových dat s cílem zmenšit jejich objem, při zachování informací v datech obsažených. My se zde zaměříme na bezztrátovou kompresi, která šetří datový objem při stahování textových souborů jako CSS nebo JS ze serveru do prohlížeče.
Známe dva hlavní způsoby komprese:
- GZIP je starší, rozšířenější a méně efektivní.
- S Brotli dosáhnete obecně větší úspory. Není tak rozšířený, ale podporu v prohlížečích má plnou.
Proč je důležité zabývat se kompresí?
Komprimovat textové soubory na webu je základ. Komprimaci používáme na HTML, JS a CSS soubory, což jsou zdroje ovlivňující dobu prvního vykreslení stránky. Logicky tedy chceme tyto zdroje co nejmenší.
Dále ji využíváme u favicon, SVG souborů a fontů. Fonty jsou ale speciální kategorie, ty moderní ve formátu WOFF a WOFF2 mají již implementovanou komprimaci v okamžiku generování souboru. Pokud tedy na fonty v těchto formátech zapnete další komprimaci, výsledkem bude soubor s vyšší datovou náročností než ten původní. Tak pozor na to. :)
Způsob komprimace se dá zjistit jednoduše v prohlížeči. Otevřete si DevTools a záložku Network. V tabulce najděte sloupeček content-encoding
.
Content-Encoding v DevTools: Když tam nic není, není to dobře.
Odhalení tajemství úrovní komprese
Nastavením Brotli a GZIPu ale určitě naše práce nekončí, to by bylo moc jednoduché. Oba dva způsoby komprese mají ještě možnost nastavit úroveň (level) komprese. GZIP má takových úrovní celkem 9, Brotli dokonce 11.
Jak se taková úspora různých úrovní komprese projeví na 55 kB souboru HTML nebo na 261 kB dat jQuery? Hodně.
Nudná komprese? Ale co když vám ušetří až dvě třetiny datového objemu?
Velký skok vidíme samozřejmě při porovnávání nekomprimovaného a komprimovaného souboru úrovně 1. Další úrovně ušetří řádově jednotky procent datové velikosti. Měli bychom se tedy ptát na otázku: Jaká úroveň komprimace je nejlepší?
Hon na ideální nastavení úrovně komprese
V úvahu u nastavení úrovně komprese musíte totiž vzít také vaši infrastrukturu a servery. Pravdou totiž je, že čím vyšší úroveň komprese, tím vyšší nároky na výpočetní výkon. Vyšší úroveň komprese si totiž vyžádá více času na provedení.