Program za stiskanje podatkov gzip je več­plat­form­ski in se v razvoju spletnih strani ter spletnih projektih pogosto uporablja kot pri­lju­blje­na rešitev za stiskanje. Preprosto ga je mogoče zagnati in upra­vlja­ti prek orodja za ukazno vrstico, kar vam pomaga pri­hra­ni­ti prostor za shra­nje­va­nje in iz­bolj­ša­ti zmo­glji­vost 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 Huff­ma­no­vim ko­di­ra­njem. S pomočjo teh tehnik gzip v datotekah išče po­na­vlja­jo­če se nize podatkov. Če program naleti na te po­na­vlja­jo­č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 ustvar­ja­nje tako ime­no­va­nih arhivov tarball z konč­ni­ca­mi .tar.gz ali .tgz potreben program za pakiranje tar. Privzeto se izvirna datoteka izbriše po st gzip ju (če se program uporabi ne­po­sre­dno na datoteko). Vendar lahko to samodejno delovanje one­mo­go­či­te z uporabo -k parametra. Za raz­pa­ki­ra­nje sti­snje­nih datotek lahko uporabite bodisi gunzip orodje bodisi ustrezen gzip.

Pregled sintakse in ukazov gzip

Čeprav so na voljo grafični upo­rab­ni­ški vmesniki za različne platforme, je seveda povsem mogoče upo­ra­blja­ti gzip prek ukazov v terminalu ali ukazni vrstici. Tudi začetniki bodo to zlahka obvladali, saj je gzip klasično orodje za ukazno vrstico, op­ti­mi­zi­ra­no za tovrstno uporabo. Splošna sintaksa je naslednja:

gzip option file(s)
bash

Na­sta­vi­tev pa­ra­me­trov ni obvezna. Če polje ostane prazno, gzip uporabi privzete na­sta­vi­tve. Na primer, za ustvar­ja­nje stisnjene različice besedilne datoteke example.txt zadostuje naslednji preprost ukaz:

gzip example.txt
bash

Če želite datoteke raz­pa­ki­ra­ti kasneje ali določiti na­sta­vi­tve za stopnjo stiskanja, mesto shra­nje­va­nja ali ravnanje z izvirno datoteko, morate v ukazih navesti ustrezne na­sta­vi­tve. V spodnji tabeli je pregled gzip naj­po­memb­nej­ših ukazov:

Možnost Opis
-1-9 Nastavi stopnjo stiskanja (1–9), pri čemer 1 za­go­ta­vlja naj­hi­trej­ši in najmanj stisnjen rezultat, 9 pa najboljšo, a naj­po­ča­snej­šo stiskanje; privzeta stopnja je 5
-r Re­kur­ziv­no pregleda imenik (vključno z vsemi po­di­me­ni­ki) 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 in­for­ma­ci­je, kot je stopnja stiskanja stisnjene datoteke
-c Izpiše stisnjeno datoteko na stan­dar­dni izhod (običajno na zaslon, povezan z ukazno vrstico)
-q Zataji vsa sporočila gzip
-t Preveri ce­lo­vi­tost stisnjene datoteke
-h Prikaže seznam vseh raz­po­lo­žlji­vih 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 upra­vi­te­lja 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 br­skal­ni­ki pa znajo razumeti stisnjene datoteke in jih raz­sti­sne­jo med pri­ka­zo­va­njem 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 ustvar­je­ne elemente spletne strani na strežniku. To lahko v okviru osnovne op­ti­mi­za­ci­je spletne strani znatno skrajša čas nalaganja strani. Medtem brskalnik v ozadju opravlja raz­pa­ki­ra­nje, ne da bi porabil dodatno pasovno širino. Ta iz­bolj­ša­va zmo­glji­vo­sti koristi zlasti upo­rab­ni­kom mobilnih naprav in lahko posredno izboljša uvrstitev vaše spletne strani v is­kal­ni­kih.

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 go­sto­va­nja to funkcijo omogočajo že privzeto, medtem ko v pre­te­klo­sti to ni bilo vedno tako. Če niste pre­pri­ča­ni, ali vaš ponudnik go­sto­va­nja podpira stiskanje gzip, se lahko obrnete ne­po­sre­dno nanj ali pa sami opravite ročni pregled.

Na spletnem strežniku Apache lahko na­sta­vi­tve modula preverite s pomočjo pre­pro­ste­ga 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 pri­la­go­di­ti svojim potrebam.

Možnost 1: Vklopite stiskanje gzip v datoteki .htaccess

Z datoteko .htaccess lahko določite na­sta­vi­tve za posamezne mape in v realnem času kon­fi­gu­ri­ra­te svoj spletni strežnik. To deluje, ker se kon­fi­gu­ra­cij­ska datoteka – ki se običajno nahaja v korenski mapi– samodejno prebere ob vsakem zahtevku, ki prispe na strežnik. Pri nekaterih po­nu­dni­kih spletnega go­sto­va­nja 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 go­sto­va­nja 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>
txt
Tip

Za uporabo modulov mod_gzip in mod_deflate boste po­tre­bo­va­li tudi do­vo­lje­nje svojega ponudnika spletnega go­sto­va­nja.

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");
?>
php

Možnost 3: Vklju­či­tev gzip prek vtičnika

Poleg teh dveh ročnih rešitev obstaja tudi možnost, ki zahteva le minimalen napor pri na­sta­vi­tvi: vklop stiskanja gzip s pomočjo vtičnika za sistem za upra­vlja­nje vsebin, ki ga upo­ra­blja­te. Takšne uporabne raz­ši­ri­tve, ki jih lahko vgradite v nekaj minutah in pri­la­go­di­te svojim potrebam, so namenjene predvsem sistemom za upra­vlja­nje vsebin, kot je WordPress, ki temeljijo na jeziku PHP. Spodnji seznam vsebuje tri najbolj pri­lju­blje­ne vtičnike za pro­gram­sko opremo za spletne dnevnike:

  • W3 Total Cache: Vtičnik W3 Total Cache za WordPress obljublja opazno iz­bolj­ša­no delovanje spletne strani. Poleg različnih me­ha­niz­mov za shra­nje­va­nje v pred­po­mnil­nik in namenske podpore za mobilne naprave ta paket za op­ti­mi­za­ci­jo za iskalnike (SEO) in upo­rab­ni­ško izkušnjo vključuje tudi možnosti za omo­go­ča­nje stiskanja gzip.
  • WP Rocket: WP Rocket je še en klasičen vtičnik za pred­po­mnje­nje v Word­Pres­su. Je enostaven za uporabo in že od samega začetka aktivira vse ključne funkcije za op­ti­mi­za­ci­jo zmo­glji­vo­sti – vključno s sti­ska­njem gzip.
  • WP Per­for­man­ce Score Booster: Vtičnik WP Per­for­man­ce Score Booster je že presegel 10.000 aktivnih na­me­sti­tev. S tem vtičnikom lahko enostavno omogočite gzip in učin­ko­vi­to stisnete vsebino svojega spletnega projekta, vključno z besedilom, HTML, Ja­va­Script, 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­ša­nje časa nalaganja projekta iz­ko­ri­sti­te tudi stiskanje gzip. Za to morate le nastaviti direktivo ngx_http_gzip_module. Privzeto je direktiva gzip, ki vklaplja ali izklaplja storitev stiskanja, iz­klo­plje­na.

Če želite spre­me­ni­ti to na­sta­vi­tev, odprite glavno kon­fi­gu­ra­cij­sko datoteko nginx.conf in poiščite direktivo gzip. Na­do­me­sti­te gzip off z gzip on. V naslednji tabeli so po­ja­snje­ni namen in možnosti nekaterih dodatnih direktiv, ki se upo­ra­blja­jo za kon­fi­gu­ra­ci­jo stiskanja gzip v strežniku NGINX:

Direktiva Sintaksa Privzeta na­sta­vi­tev Opis
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; Določa število in velikost po­mnil­ni­kov, ki se upo­ra­blja­jo med sti­ska­njem
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 pre­iz­ku­si­ti stiskanje gzip

Ko nastavite stiskanje gzip za svojo spletno stran, lahko z raz­lič­ni­mi orodji preverite, ali deluje pravilno in ali vaš spletni strežnik v odgovor na zahteve upo­rab­ni­kov pošilja stisnjeno vsebino. Eno izmed najbolj pri­po­ro­če­nih orodij za to je Google PageSpeed Insights. Preprosto vnesite katero koli stran s svojega spletnega mesta in orodje bo samodejno ana­li­zi­ra­lo njeno vsebino ter pri­pra­vi­lo poročilo o pred­no­stih in slabostih delovanja strani. Med rezultati boste našli in­for­ma­ci­je o tem, ali je stiskanje gzip omogočeno.

Druga možnost je, da opravite hiter gzip-test s pomočjo orodja HTTP Com­pres­si­on Test na spletni strani WhatsMyIP.org.

Go to Main Menu