Rendszeresen visszatérő kérdés a webszerverek üzemeltetésével kapcsolatban, hogy mivel érdemes tömörítenünk a weblapunk forgalmát. A Gzip, a Brotli vagy a Zstandard eljárás jobb? A válasz koránt sem olyan egyszerű, mint azt elsőre gondolnánk.
A tömörítés weblapok esetén jórészt csak HTML, CSS, Javascript, XML és egyéb szöveges fájlokra korlátozódik. Egy átlagos weboldal esetén, mint pl. a SEOtrend.hu ezek tömörítésével néhány száz kilobyte megtakarítást érhetünk el. Ez talán nem tűnik soknak, de gyengébb kapcsolat esetén már ennyi is jelentősen befolyásolhatja a weboldalunk Core Web Vitals mutatóit.
Weblapokat tömöríteni tehát szükséges, de az eszközt nekünk kell kiválasztanunk. Ehhez próbálok egy kis segítséget adni ebben a cikkben. Nézzük elsőként a jelenleg rendelkezésünkre álló lehetőségeket, módszereket!
HTTP tömörítési módszerek
Bár számos egyéb tömörítési módszer is létezik, 2024-ben a böngészők jellemzően az alábbi 4-et támogatják. Fontos, hogy mindegyik nyílt forráskódú fejlesztés, így a terjedésük előtt nincsenek akadályok.
- Deflate (deflate). A négy közül ez a legrégebbi, amelyet a PKZip fejlesztője, Phil Katz alkotott. Ez ma már jórészt csak kompatibilitási okokból támogatott.
- Gzip (gzip). A GNU projekt részeként fejlesztett Gzip is DEFLATE algoritmust használ, de az adatformátuma eltér az 1. pontban említett Deflate formátumától. Ez a legszélesebb körben alkalmazott módszer napjainkban.
- Brotli (br). A Google által fejlesztett módszer. Magasabb tömörítési szinten a Gzipnél jobb tömörítési arányt képes elérni. Széles körben támogatott, bár a Gzip elterjedtségét még nem érte el.
- Zstandard (zstd). A legújabb eljárás, amelyet a Facebook fejleszt. Jelentősen felülmúlja a vetélytársait, főképp sebességben. A Gzippel összehasonlítva magasabb tömörítési szinten jobb tömörítési arányt ad, ráadásul kisebb erőforrás-felhasználás mellett.
Az utolsó három módszer közül a Zstandard kiemelkedően teljesít, rugalmas, gyors és egyben hatékony. Mi kellhetne még? Például nem ártana, ha a Safari böngésző és a webes crawlerek is támogatnák, de ez jelenleg még nincs így.
Gzip, Brotli és Zstandard összehasonlítása
Végeztem néhány egyszerű tesztet, amelyek eredményét az alábbi grafikonon foglaltam össze. Nem egy mindenre kiterjedő alaposságú elemzés volt a célom, inkább a valós alkalmazási körülmények közötti összehasonlíthatóság. 10 darab egyenként 10 MByte méretű XML fájlt tömörítettem, alapbeállításokkal, mindhárom tömörítőnek 6-os szintet beállítva.

A grafikonon is látható, hogy a Gzipet mind erőforrásigényben, mind hatékonyságban maguk mögé utasítják az újabb, korszerűbb eljárások. Már-már egyértelmű, hogy ezeket kellene előnyben részesítenünk. A valós környezetben, átlagos weboldalaknál ezek alkalmazása azonban koránt sem jár látványos előnyökkel.
A Brotli és a Zstandard esetében fontos megjegyezni, hogy mindkettő lehetőséget ad extrém tömörítésre is. Ezek a tömörítési tesztekben ugyan látványosak, de az erőforrásigényük miatt éles környezetben gyakorlati hasznuk nincs. A mérésem szerint a legerősebb tömörítési szinten a Zstandard (22, ultra) 600-szor, a Brotli (19) pedig 1200-szor lassabb, mintha ugyanazt a fájlt a leggyorsabb szinten (1) tömörítjük.
Akkor melyik módszert válasszuk?
A legfontosabb kérdés, hogy megéri-e az újabb, hatékonyabb tömörítési módszerek felé nyitnunk. A Gzip alapértelmezetten rendelkezésre áll a legtöbb rendszerben, szinte minden böngésző, crawler és fejlesztő környezet támogatja. A Brotli és a Zstandard terjednek ugyan, de a támogatottságuk koránt sem teljes körű. Az átlagos weboldalak esetén ezeknek nincs akkora előnyük, hogy akár csak 1 órányi plusz munkát is megérné áldozni rájuk.
Felvetődhet a kérdés, hogy ha ennyire kevés előnnyel járnak az új eljárások, akkor ugyan mi hívta életre őket? Egyszerű, ezeket nem átlagos weblapokra tervezték. A Google vagy a Facebook esetén már a néhány százaléknyi nyereség is dollármilliókban mérhető megtakarítást jelent éves szinten. Ha ekkorára nő a weblapod, akkor mindenképp át kell majd gondolnod, hogy a Zstandard vagy Brotli valamelyikét alkalmazd a rendszereiden. Addig azonban a Gzip is biztosan tökéletesen elegendő lesz.
További információ: