Mi az a gzip és hogyan használják ezt az eszközt?
A gzip adatkompressziós szoftver platformfüggetlen, és széles körben használják webfejlesztésben és webprojektekben, mint elsődleges kompressziós megoldást. Könnyen aktiválható és kezelhető a parancssori eszközön keresztül, segítve a tárhely megtakarítását és a rendszer teljesítményének javítását.
Hogyan működik a gzip?
A Gzip – a „GNU zip” rövidítése – a szabadon elérhető Deflate algoritmuson alapul, amely ötvözi az LZ77 (Lempel-Ziv 77) tömörítési módszert a Huffman-kódolással. Ezeknek a technikáknak a segítségével a gzip fájlok megkeresik az ismétlődő adatláncokat. Ha a program ilyen ismétlődő szekvenciákra bukkan, azokat az első megjelenésük helyére mutató hivatkozással helyettesíti. Ezeknek a szekvenciáknak a hossza általában 32 000 bájtra korlátozódik. Ha egy karakterlánc nem jelenik meg az előző 32 000 bájtban, akkor (tömörítés nélkül) a .gz kiterjesztésű gzip fájlban tárolódik.
Az eljárás csak egyedi fájlokra korlátozódik, ezért a tar csomagolóprogramra van szükség az úgynevezett tarball archívumok létrehozásához, amelyek kiterjesztése: .tar.gz vagy .tgz. Alapértelmezés szerint az eredeti fájl gzip tömörítés után törlődik (ha közvetlenül egy fájlra alkalmazzák). Ez az automatikus viselkedés azonban az opcionális -k paraméterrel letiltható. A tömörített fájlok kicsomagolásához használhatja a gunzip segédprogramot vagy a megfelelő gzip parancsot.
A gzip szintaxisának és parancsainak áttekintése
Bár különböző platformokhoz grafikus felhasználói felületek is rendelkezésre állnak, természetesen teljesen lehetséges gzip parancsok használata a terminálban vagy a parancssorban. Még a kezdők is könnyen kezelhetőnek találják, mivel gzip egy klasszikus parancssori eszköz, amelyet erre a felhasználásra optimalizáltak. Az általános szintaxis a következő formát követi:
gzip option file(s)bashAz opciók megadása nem kötelező. Ha a mező üresen marad, gzip egyszerűen az alapértelmezett beállításokat használja. Például a következő egyszerű parancs elegendő a example.txt szövegfájl tömörített változatának létrehozásához:
gzip example.txtbashA fájlok későbbi kicsomagolásához, illetve a tömörítési szint, a tárolási hely vagy az eredeti fájl kezelésének megadásához a parancsokhoz megfelelő specifikációk szükségesek. Az alábbi táblázat a gzip legfontosabb parancs áttekintését tartalmazza:
| Opció | Leírás |
|---|---|
-1 … -9
|
Beállítja a tömörítési szintet (1–9), ahol 1 a leggyorsabb és legkevésbé tömörített eredményt, 9 pedig a legjobb, de leglassabb tömörítést biztosítja; az alapértelmezett szint 5.
|
-r
|
Rekurzív módon átvizsgálja a könyvtárat (beleértve az összes alkönyvtárat) és tömöríti vagy kicsomagolja az összes benne található fájlt |
-f
|
Kényszeríti a gzip tömörítést, és szükség esetén felülírja a meglévő, azonos nevű fájlokat. |
-d
|
Kicsomagolja a kiválasztott fájlt az aktuális könyvtárba. |
-k
|
Megakadályozza az eredeti fájl törlését. |
-l
|
Megjeleníti az információkat, például a tömörített fájl tömörítési arányát. |
-c
|
A tömörített fájlt a standard kimenetre (általában a parancssorhoz csatlakoztatott képernyőre) továbbítja. |
-q
|
Elnyomja az összes gzip üzenetet. |
-t
|
Ellenőrzi a tömörített fájl integritását. |
-h
|
Felsorolja az összes elérhető opciót |
A gzip tömörítés használati esetei
Ma gzip szinte platformfüggetlen és szükség szerint bővíthető, feltéve, hogy a választott projekt megfelel a GPL licencnek. Linux rendszereken a tömörítő eszköz általában előre telepítve van, vagy a csomagkezelőn keresztül könnyen elérhető. A hivatalos gzip weboldal macOS és Windows verziókat is kínál. A szoftvert ezeken a rendszereken bármikor használhatja a tárhely megtakarításához.
Egy másik fontos alkalmazási terület az internet. Az Apache-hoz hasonló webszerverek már évek óta támogatják a gzip tömörítést, és a modern böngészők képesek értelmezni a tömörített fájlokat és kicsomagolni azokat a weboldal megjelenítése során. Itt tud gzip teljes mértékben érvényesülni, mert ha engedélyezve van, a webszerver automatikusan tömöríti mind a feltöltött tartalmat, mind a dinamikusan generált weboldal elemeket a szerveren. Ez jelentősen csökkentheti a weboldal betöltési idejét, ami az alapvető weboldal-optimalizálás része. Eközben a böngésző a háttérben kezeli a kicsomagolást, anélkül, hogy további sávszélességet fogyasztana. Ez a teljesítménynövekedés különösen a mobil felhasználóknak kedvez, és közvetetten javíthatja weboldalának keresőmotorokbeli rangsorolását.
Hogyan használhatja a gzip tömörítést Apache webprojektjéhez?
A webszerverek általában gzip tömörítést kínálnak, amely egy egyszerűen engedélyezhető modul. Manapság sok webtárhely-szolgáltató alapértelmezésként aktiválja ezt a funkciót, míg korábban ez nem mindig volt így. Ha nem biztos abban, hogy a tárhelyszolgáltatója támogatja-e a gzip tömörítést, akkor közvetlenül felveheti vele a kapcsolatot, vagy saját maga is elvégezheti a kézi ellenőrzést.
Apache webszerveren a modul beállításait egy egyszerű phpinfo() kimenettel ellenőrizheti. A HTTP_ACCEPT_ENCODING bejegyzés megmutatja, melyik tömörítési módszer van kiválasztva, illetve hogy egyáltalán engedélyezve van-e a tömörítés. Ha gzip elérhető, három különböző lehetőség közül választhat, hogy ezt a tömörítési eszközt igényei szerint használja.
1. lehetőség: Engedélyezze a gzip tömörítést a .htaccess fájlban
A .htaccess fájl segítségével megadhatja a könyvtárspecifikus beállításokat és valós időben konfigurálhatja a webszervert. Ez azért működik, mert a konfigurációs fájlt – amely általában a gyökérkönyvtárbantalálható – a szerver minden kérésénél automatikusan beolvassa. Egyes webtárhely-szolgáltatóknál azonban előfordulhat, hogy a .htaccess egy másik mappában található, rejtett, vagy akár hozzáférése is korlátozott. Ebben az esetben az egyetlen lehetőség az, hogy felveszi a kapcsolatot a tárhelyszolgáltatójával, és hozzáférést kér. Ha módosításokat tud végrehajtani, engedélyezheti a gzip tömörítést a Deflate algoritmus (mod_deflate) moduljával, ha a következő kódot adja hozzá a .htaccess fájlhoz:
<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>txtA mod_gzip és mod_deflate modulok használatához a webtárhely-szolgáltató engedélyére is szükség lesz.
2. lehetőség: gzip tömörítés engedélyezése PHP-n keresztül
A gzip tömörítést egy egyszerű PHP utasítással lehet aktiválni. A hátránya, hogy a kódot minden PHP fájlhoz külön-külön kell hozzáadni. Ezért ezt az opciót csak akkor érdemes használni, ha nincs megfelelő jogosultsága a .htaccess fájl szerkesztéséhez. Az egyes fájlok elejére beillesztendő kódsor a következő:
<?php
ob_start("ob_gzhandler");
?>php3. lehetőség: gzip beépítése plugin segítségével
Ezen két manuális megoldás mellett létezik egy olyan változat is, amelynek beállítása minimális erőfeszítést igényel: a gzip tömörítés aktiválása az Ön által használt tartalomkezelő rendszerhez tartozó plugin segítségével. Az ilyen hasznos kiterjesztések, amelyeket néhány perc alatt beágyazhat és igényeihez igazíthat, elsősorban olyan CMS-ekhez készültek, mint a WordPress, amelyek PHP-n alapulnak. Az alábbi lista a weblog szoftverhez legnépszerűbb három plugint tartalmazza:
- W3 Total Cache: A W3 Total Cache WordPress plugin jelentősen javítja a weboldal teljesítményét. A különféle gyorsítótár-mechanizmusok és a dedikált mobil támogatás mellett ez a SEO és használhatósági csomag gzip tömörítési lehetőségeket is tartalmaz.
- WP Rocket: A WP Rocket egy másik klasszikus WordPress gyorsítótár-plugin. Könnyen használható, és a kezdetektől fogva aktiválja az összes fontos teljesítményoptimalizáló funkciót, beleértve a gzip tömörítést is.
- WP Performance Score Booster: A WP Performance Score Booster plugin már meghaladta a 10 000 aktív telepítést. Ezzel a pluginnal könnyedén engedélyezheti a gzip-et, és hatékonyan tömörítheti webprojektje tartalmát, beleértve a szöveget, HTML-t, JavaScript-et, CSS-t, XML-t és egyebeket.
Hogyan konfiguráljuk a gzip-et egy NGINX webszerveren lépésről lépésre
Ha webhelyének tartalmát NGINX webszerveren keresztül szállítja, akkor a gzip tömörítés előnyeit is kihasználhatja a projekt betöltési idejének javítása érdekében. Ehhez egyszerűen csak be kell állítania ngx_http_gzip_module. Alapértelmezés szerint a gzip utasítás – amely engedélyezi vagy letiltja a tömörítési szolgáltatást – ki van kapcsolva.
A beállítás módosításához nyissa meg a fő konfigurációs fájlt nginx.conf, és keresse meg a gzip utasítást. Cserélje ki gzip off gzip on. Az alábbi táblázat bemutatja az NGINX gzip tömörítésének konfigurálásához használt néhány további utasítás célját és opcióit:
| Irányelv | Szintaxis | Alapértelmezett beállítás | Leírás | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Meghatározza a tömörítési folyamat során használt pufferek számát és méretét. |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Beállítja a tömörítési szintet; érvényes értékek: 1–9. | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Meghatározza a tömörítendő fájl minimális hosszát (bájtban) | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Meghatározza a tömörített válaszokhoz szükséges minimális HTTP verziót. | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Meghatározza, mely tartalomtípusokat kell tömöríteni (pl. CSS, JSON, XML) |
Hogyan teszteljük a gzip tömörítést?
Miután beállította a gzip tömörítést a webhelyén, különböző eszközökkel ellenőrizheti, hogy megfelelően működik-e, és hogy a webszerver tömörített tartalmat szolgáltat-e a kliens kérésekre válaszul. Az egyik leginkább ajánlott eszköz ehhez a Google PageSpeed Insights. Egyszerűen adja meg webhelyének bármelyik oldalát, és az eszköz automatikusan elemzi annak tartalmát, majd jelentést készít az oldal teljesítményének erősségeiről és gyengeségeiről. Az eredmények között megtalálja azt is, hogy a gzip tömörítés engedélyezve van-e.
Alternatív megoldásként elvégezhet egy gyors gzip tesztet a WhatsMyIP.org webhelyen található HTTP Compression Test segítségével.