# 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:

```bash
gzip option file(s)
```

Nastavitev 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:

```bash
gzip example.txt
```

Č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:

<table>
  <thead>
    <tr>
      <th>Možnost</th>
      <th>Opis</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>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`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Rekurzivno pregleda imenik (vključno z vsemi podimeniki) in stisne ali razstisne vse vsebovane datoteke</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Prisili gzip stiskanje in po potrebi prepiše obstoječe datoteke z istim imenom</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Razpakira izbrano datoteko v trenutni imenik</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Prepreči izbris izvirne datoteke</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Prikaže informacije, kot je stopnja stiskanja stisnjene datoteke</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Izpiše stisnjeno datoteko na standardni izhod (običajno na zaslon, povezan z ukazno vrstico)</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Zataji vsa sporočila gzip</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Preveri celovitost stisnjene datoteke</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Prikaže seznam vseh razpoložljivih možnosti</td>
    </tr>
  </tbody>
</table>

## 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](https://www.gzip.org/ "gzip.org – the official website of the compression program") 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:

```txt
<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>
```

Tip Za 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
<?php
ob_start("ob_gzhandler");
?>
```

### Mož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](https://wordpress.org/plugins/w3-total-cache/ "Web performance optimization for WordPress projects: 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](https://wp-rocket.me/ "WP Rocket website")**: 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](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: WP Performance Score Booster Download")**: 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:

<table>
  <thead>
    <tr>
      <th>Direktiva</th>
      <th>Sintaksa</th>
      <th>Privzeta nastavitev</th>
      <th>Opis</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`gzip_buffers`</td>
      <td>`gzip_buffers number size;`</td>
      <td>`gzip_buffers 32 4k` \\</td>
      <td>`16 8k;`</td>
      <td>Določa število in velikost pomnilnikov, ki se uporabljajo med stiskanjem</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level level;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Nastavi stopnjo stiskanja; veljavne vrednosti: 1–9</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_min_length`</td>
      <td>`gzip_min_length length;`</td>
      <td>`gzip_min_length 20;`</td>
      <td>Določa minimalno dolžino (v bajtih) datoteke, ki jo je treba stisniti</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version version;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Določa minimalno različico HTTP, potrebno za stisnjene odgovore</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types content-type;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Določa, katere vrste vsebin naj se stisnejo (npr. CSS, JSON, XML)</td>
      <td></td>
    </tr>
  </tbody>
</table>

## 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](https://www.whatsmyip.org/http-compression-test/ "HTTP Compression Test – WhatsMyIP.org").


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/streznik/znanje/kaj-je-gzip-in-kaksne-so-prednosti-tega-programa/](https://www.ionos.com/sl-si/digitalguide/streznik/znanje/kaj-je-gzip-in-kaksne-so-prednosti-tega-programa/) for AI/LLM consumption.