Kaj je gzip in kako se to orodje uporablja?
Program za stiskanje podatkov gzip je večplatformski in se v razvoju spletnih strani ter spletnih projektih pogosto uporablja kot priljubljena rešitev za stiskanje. Preprosto ga je mogoče zagnati in upravljati prek orodja za ukazno vrstico, kar vam pomaga prihraniti prostor za shranjevanje in izboljšati zmogljivost sistema.
Kako deluje gzip?
Gzip — okrajšava za »GNU zip« — temelji na prosto dostopnem algoritmu Deflate, ki združuje metodo stiskanja LZ77 (Lempel-Ziv 77) s Huffmanovim kodiranjem. S pomočjo teh tehnik gzip v datotekah išče ponavljajoče se nize podatkov. Če program naleti na te ponavljajoče se zaporedja, jih nadomesti s sklicem na niz, ki se prvič pojavi. Dolžina teh zaporedij je običajno omejena na 32.000 bajtov. Če se niz znakov ne pojavi v prejšnjih 32.000 bajtih, se shrani (brez stiskanja) v datoteko gzip, ki dobi končnico .gz.
Postopek je omejen na posamezne datoteke, zato je za ustvarjanje tako imenovanih arhivov tarball z končnicami .tar.gz ali .tgz potreben program za pakiranje tar. Privzeto se izvirna datoteka izbriše po st gzip ju (če se program uporabi neposredno na datoteko). Vendar lahko to samodejno delovanje onemogočite z uporabo -k parametra. Za razpakiranje stisnjenih datotek lahko uporabite bodisi gunzip orodje bodisi ustrezen gzip.
Pregled sintakse in ukazov gzip
Čeprav so na voljo grafični uporabniški vmesniki za različne platforme, je seveda povsem mogoče uporabljati gzip prek ukazov v terminalu ali ukazni vrstici. Tudi začetniki bodo to zlahka obvladali, saj je gzip klasično orodje za ukazno vrstico, optimizirano za tovrstno uporabo. Splošna sintaksa je naslednja:
gzip option file(s)bashNastavitev parametrov ni obvezna. Če polje ostane prazno, gzip uporabi privzete nastavitve. Na primer, za ustvarjanje stisnjene različice besedilne datoteke example.txt zadostuje naslednji preprost ukaz:
gzip example.txtbashČe želite datoteke razpakirati kasneje ali določiti nastavitve za stopnjo stiskanja, mesto shranjevanja ali ravnanje z izvirno datoteko, morate v ukazih navesti ustrezne nastavitve. V spodnji tabeli je pregled gzip najpomembnejših ukazov:
| Možnost | Opis |
|---|---|
-1 … -9
|
Nastavi stopnjo stiskanja (1–9), pri čemer 1 zagotavlja najhitrejši in najmanj stisnjen rezultat, 9 pa najboljšo, a najpočasnejšo stiskanje; privzeta stopnja je 5
|
-r
|
Rekurzivno pregleda imenik (vključno z vsemi podimeniki) in stisne ali razstisne vse vsebovane datoteke |
-f
|
Prisili gzip stiskanje in po potrebi prepiše obstoječe datoteke z istim imenom |
-d
|
Razpakira izbrano datoteko v trenutni imenik |
-k
|
Prepreči izbris izvirne datoteke |
-l
|
Prikaže informacije, kot je stopnja stiskanja stisnjene datoteke |
-c
|
Izpiše stisnjeno datoteko na standardni izhod (običajno na zaslon, povezan z ukazno vrstico) |
-q
|
Zataji vsa sporočila gzip |
-t
|
Preveri celovitost stisnjene datoteke |
-h
|
Prikaže seznam vseh razpoložljivih možnosti |
Primeri uporabe stiskanja gzip
Danes je gzip skoraj neodvisen od platforme in ga je mogoče po potrebi razširiti, če izbrani projekt upošteva licenco GPL. V sistemih Linux je program za stiskanje datotek običajno že vnaprej nameščen ali pa ga je mogoče enostavno prenesti prek upravitelja paketov. Uradna spletna stran gzip ponuja tudi različice za macOS in Windows. Program lahko na teh sistemih kadarkoli uporabite za prihranek prostora na disku.
Drugo ključno področje uporabe je splet. Spletni strežniki, kot je Apache, že vrsto let podpirajo stiskanje gzip, sodobni brskalniki pa znajo razumeti stisnjene datoteke in jih razstisnejo med prikazovanjem spletne strani. Prav tu lahko gzip v polni meri pokaže svoje prednosti, saj spletni strežnik, ko je ta funkcija omogočena, samodejno stisne tako naloženo vsebino kot tudi dinamično ustvarjene elemente spletne strani na strežniku. To lahko v okviru osnovne optimizacije spletne strani znatno skrajša čas nalaganja strani. Medtem brskalnik v ozadju opravlja razpakiranje, ne da bi porabil dodatno pasovno širino. Ta izboljšava zmogljivosti koristi zlasti uporabnikom mobilnih naprav in lahko posredno izboljša uvrstitev vaše spletne strani v iskalnikih.
Kako uporabiti stiskanje gzip za svoj spletni projekt Apache
Spletni strežniki ponavadi ponujajo stiskanje gzip kot modul, ki ga je treba le omogočiti. Danes mnogi ponudniki spletnega gostovanja to funkcijo omogočajo že privzeto, medtem ko v preteklosti to ni bilo vedno tako. Če niste prepričani, ali vaš ponudnik gostovanja podpira stiskanje gzip, se lahko obrnete neposredno nanj ali pa sami opravite ročni pregled.
Na spletnem strežniku Apache lahko nastavitve modula preverite s pomočjo preprostega izpisa phpinfo(). Vnos HTTP_ACCEPT_ENCODING vam bo pokazal, katera metoda stiskanja je izbrana – ali pa sploh ni omogočeno nobeno stiskanje. Če je na voljo gzip, imate na voljo tri različne možnosti, kako to orodje za stiskanje prilagoditi svojim potrebam.
Možnost 1: Vklopite stiskanje gzip v datoteki .htaccess
Z datoteko .htaccess lahko določite nastavitve za posamezne mape in v realnem času konfigurirate svoj spletni strežnik. To deluje, ker se konfiguracijska datoteka – ki se običajno nahaja v korenski mapi– samodejno prebere ob vsakem zahtevku, ki prispe na strežnik. Pri nekaterih ponudnikih spletnega gostovanja pa se lahko .htaccess nahaja v drugi mapi, je skrita ali pa je dostop do nje celo omejen. V tem primeru je vaša edina možnost, da se obrnete na ponudnika gostovanja in zaprosite za dostop. Če lahko izvedete spremembe, lahko omogočite stiskanje gzip z uporabo modula za algoritem Deflate (mod_deflate), tako da v datoteko .htaccess dodate naslednjo kodo:
<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>txtZa uporabo modulov mod_gzip in mod_deflate boste potrebovali tudi dovoljenje svojega ponudnika spletnega gostovanja.
Možnost 2: Vklop stiskanja gzip prek PHP-ja
Stiskanje gzip je mogoče vklopiti s preprosto PHP-kodo. Slaba stran tega je, da je treba kodo dodati v vsako PHP-datoteko posebej. Zato to možnost uporabite le, če nimate potrebnih dovoljenj za urejanje datoteke .htaccess. Koda, ki jo je treba vstaviti na začetek vsake datoteke, je naslednja:
<?php
ob_start("ob_gzhandler");
?>phpMožnost 3: Vključitev gzip prek vtičnika
Poleg teh dveh ročnih rešitev obstaja tudi možnost, ki zahteva le minimalen napor pri nastavitvi: vklop stiskanja gzip s pomočjo vtičnika za sistem za upravljanje vsebin, ki ga uporabljate. Takšne uporabne razširitve, ki jih lahko vgradite v nekaj minutah in prilagodite svojim potrebam, so namenjene predvsem sistemom za upravljanje vsebin, kot je WordPress, ki temeljijo na jeziku PHP. Spodnji seznam vsebuje tri najbolj priljubljene vtičnike za programsko opremo za spletne dnevnike:
- W3 Total Cache: Vtičnik W3 Total Cache za WordPress obljublja opazno izboljšano delovanje spletne strani. Poleg različnih mehanizmov za shranjevanje v predpomnilnik in namenske podpore za mobilne naprave ta paket za optimizacijo za iskalnike (SEO) in uporabniško izkušnjo vključuje tudi možnosti za omogočanje stiskanja gzip.
- WP Rocket: WP Rocket je še en klasičen vtičnik za predpomnjenje v WordPressu. Je enostaven za uporabo in že od samega začetka aktivira vse ključne funkcije za optimizacijo zmogljivosti – vključno s stiskanjem gzip.
- WP Performance Score Booster: Vtičnik WP Performance Score Booster je že presegel 10.000 aktivnih namestitev. S tem vtičnikom lahko enostavno omogočite gzip in učinkovito stisnete vsebino svojega spletnega projekta, vključno z besedilom, HTML, JavaScript, CSS, XML in še več.
Kako korak za korakom nastaviti gzip na spletnem strežniku NGINX
Če vsebino spletnega mesta prenašate prek spletnega strežnika NGINX, lahko za skrajšanje časa nalaganja projekta izkoristite tudi stiskanje gzip. Za to morate le nastaviti direktivo ngx_http_gzip_module. Privzeto je direktiva gzip, ki vklaplja ali izklaplja storitev stiskanja, izklopljena.
Če želite spremeniti to nastavitev, odprite glavno konfiguracijsko datoteko nginx.conf in poiščite direktivo gzip. Nadomestite gzip off z gzip on. V naslednji tabeli so pojasnjeni namen in možnosti nekaterih dodatnih direktiv, ki se uporabljajo za konfiguracijo stiskanja gzip v strežniku NGINX:
| Direktiva | Sintaksa | Privzeta nastavitev | Opis | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Določa število in velikost pomnilnikov, ki se uporabljajo med stiskanjem |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Nastavi stopnjo stiskanja; veljavne vrednosti: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Določa minimalno dolžino (v bajtih) datoteke, ki jo je treba stisniti | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Določa minimalno različico HTTP, potrebno za stisnjene odgovore | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Določa, katere vrste vsebin naj se stisnejo (npr. CSS, JSON, XML) |
Kako preizkusiti stiskanje gzip
Ko nastavite stiskanje gzip za svojo spletno stran, lahko z različnimi orodji preverite, ali deluje pravilno in ali vaš spletni strežnik v odgovor na zahteve uporabnikov pošilja stisnjeno vsebino. Eno izmed najbolj priporočenih orodij za to je Google PageSpeed Insights. Preprosto vnesite katero koli stran s svojega spletnega mesta in orodje bo samodejno analiziralo njeno vsebino ter pripravilo poročilo o prednostih in slabostih delovanja strani. Med rezultati boste našli informacije o tem, ali je stiskanje gzip omogočeno.
Druga možnost je, da opravite hiter gzip-test s pomočjo orodja HTTP Compression Test na spletni strani WhatsMyIP.org.