# Mis on gzip ja kuidas seda tööriista kasutatakse?

Gzip-andmete pakkimistarkvara on platvormiülene ja seda kasutatakse veebiarenduses ning veebiprojektides laialdaselt eelistatud pakkimislahendusena. Seda saab hõlpsasti aktiveerida ja kasutada käsurea tööriista abil, mis aitab säästa salvestusruumi ja parandada süsteemi jõudlust.

## Kuidas gzip töötab?

Gzip – lühend sõnadest „GNU zip“ – põhineb vabalt kättesaadaval Deflate-algoritmil, mis ühendab LZ77 (Lempel-Ziv 77) pakkimismeetodi Huffmani kodeeringuga. Neid meetodeid kasutades otsib gzip-failid dubleeritud andmejadasid. Kui programm leiab selliseid **korduvaid jadasid**, asendab ta need viitega esimesena esinevale jadale. Nende järjestuste pikkus on tavaliselt **piiratud 32 000 baitiga**. Kui märgijada ei esine eelnevas 32 000 baitis, salvestatakse see (pakkimata) gzip-faili, mis saab laiendi .gz.

Protseduur piirdub üksikute failidega, mistõttu on vaja **pakkimisprogrammi** tar, et luua nn tarball-arhiive laienditega *.tar.gz* või *.tgz*. Vaikimisi kustutatakse algne fail pärast `gzip` (kui `gzip` rakendatakse otse failile). Seda automaatset käitumist saab aga keelata, kasutades valikulist `-k` parameetrit. Pakitud failide lahtipakkimiseks saab kasutada kas `gunzip` utiliiti või sobivat `gzip` käsku.

## Ülevaade gzipi süntaksist ja käskudest

Kuigi erinevatele platvormidele on olemas graafilised kasutajaliidesed, on `gzip` kasutamine terminali või käsurea kaudu loomulikult täiesti võimalik. Isegi algajatel ei tekita see raskusi, kuna `gzip` on **klassikaline käsurea tööriist**, mis on just selliseks kasutamiseks optimeeritud. Üldine süntaks on järgmine:

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

Parameetrite määramine ei ole kohustuslik. Kui väli jäetakse tühjaks, kasutab `gzip` lihtsalt vaikimisi seadeid. Näiteks piisab järgmisest lihtsast käsust, et luua tekstifaili `example.txt` pakitud versioon:

```bash
gzip example.txt
```

Kui soovite faile hiljem lahti pakkida või määrata parameetreid **pakkimistaseme**, **salvestuskoha** või **originaalfaili** käitlemise kohta, tuleb käskudele lisada vastavad parameetrid. Järgmises tabelis on esitatud ülevaade `gzip` olulisimast käsust:

<table>
  <thead>
    <tr>
      <th>Valik</th>
      <th>Kirjeldus</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>Määrab pakkimistaseme (1–9), kus `1` annab kiireima ja kõige vähem pakitud tulemuse ning `9` pakub parimat, kuid aeglasemat pakkimist; vaikimisi tase on `5`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Skaneerib kataloogi (sh kõik alamkataloogid) rekursiivselt ja pakub või laeb lahti kõik selles sisalduvad failid</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Sundib gzip-pakkimist ja kirjutab vajadusel üle olemasolevad samanimelised failid</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Laeb valitud faili lahti praegusesse kataloogi</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Takistab originaalfaili kustutamist</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Kuvab teavet, näiteks pakitud faili pakkimissuhet</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Saadab pakitud faili standardväljundisse (tavaliselt käsureale ühendatud ekraanile)</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Võtab maha kõik gzip-sõnumid</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Kontrollib pakitud faili terviklikkust</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Loetleb kõik saadaval olevad valikud</td>
    </tr>
  </tbody>
</table>

## Gzip-pakkimise kasutusjuhtumid

Tänapäeval on `gzip` peaaegu platvormist sõltumatu ja seda saab vajaduse korral laiendada, tingimusel et valitud projekt vastab GPL-litsentsile. **Linuxi süsteemides** on see pakkimisvahend tavaliselt eelinstallitud või kergesti kättesaadav pakettide halduri kaudu. Ametlikul [gzipi veebisaidil](https://www.gzip.org/ "gzip.org – the official website of the compression program") on saadaval ka versioonid **macOS-ile ja Windowsile**. Neis süsteemides saab seda tarkvara igal ajal kasutada, et **säästa salvestusruumi**.

Teine oluline rakendusvaldkond on **veeb**. Veebiserverid, nagu Apache, on juba aastaid toetanud gzip-pakkimist, ning tänapäevased brauserid suudavad pakitud faile tõlgendada ja **neid veebilehe kuvamise ajal lahti pakkida**. Just siin saab `gzip` oma eeliseid täielikult ära kasutada, sest kui see funktsioon on sisse lülitatud, pakib veebiserver automaatselt nii üleslaaditud sisu kui ka serveris dünaamiliselt genereeritud veebilehe elemente. See võib **veebilehe laadimisaega** oluliselt **lühendada**, olles osa veebilehe põhilisest optimeerimisest. Samal ajal tegeleb brauser taustal lahtipakkimisega, ilma et see tarbiks lisanduvat ribalaiust. Sellest jõudluse kasvust saavad kasu eelkõige **mobiilikasutajad** ning see võib kaudselt parandada teie veebisaidi positsiooni otsingumootorites.

## Kuidas kasutada gzip-pakkimist oma Apache-veebiprojektis

Veebiserverid pakuvad gzip-pakkimist tavaliselt moodulina, mis tuleb lihtsalt **sisse lülitada**. Tänapäeval on paljudel veebimajutusteenuse pakkujatel see funktsioon vaikimisi aktiveeritud, kuigi varem see alati nii ei olnud. Kui te ei ole kindel, kas teie majutusteenuse pakkuja toetab gzip-pakkimist, võite kas otse nendega ühendust võtta või ise **käsitsi kontrollida**.

Apache veebiserveris saate mooduli seadeid kontrollida lihtsa `phpinfo()` väljundi abil. `HTTP_ACCEPT_ENCODING` kirje näitab, milline pakkimismeetod on valitud – või kas pakkimine on üldse sisse lülitatud. Kui `gzip` on saadaval, on teil kolm erinevat võimalust seda pakkimisvahendit oma vajadustele vastavalt kasutada.

### 1. võimalus: gzip-pakkimise lubamine .htaccess-failis

.htaccess-faili abil saate määrata kataloogipõhiseid seadeid ja konfigureerida veebiserverit reaalajas. See toimib seetõttu, et konfiguratsioonifaili – mis asub tavaliselt **juurkataloogis**– loetakse automaatselt iga serverisse saabuva päringu korral. Mõnede veebimajutusteenuse pakkujate puhul võib `.htaccess` aga asuda mõnes muus kaustas, olla peidetud või isegi juurdepääsupiiranguga. Sellisel juhul on teie ainus võimalus võtta ühendust oma veebimajutusteenuse pakkujaga ja **taotleda juurdepääsu**. Kui teil on võimalik muudatusi teha, saate gzip-pakkimise lubada, kasutades Deflate-algoritmi moodulit (`mod_deflate`), lisades järgmise koodi faili `.htaccess`:

```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 `mod_gzip` ja `mod_deflate` mooduli kasutamiseks on vaja ka veebimajutaja luba.

### 2. võimalus: gzip-pakkimise lubamine PHP kaudu

Gzip-pakkimist on võimalik aktiveerida lihtsa PHP-käsu abil. Selle puuduseks on see, et kood tuleb lisada **eraldi igasse PHP-faili**. Seetõttu peaksite seda võimalust kasutama ainult juhul, kui teil puuduvad vajalikud õigused faili `.htaccess` muutmiseks. Iga faili algusse tuleb lisada järgmine koodirida:

```php
<?php
ob_start("ob_gzhandler");
?>
```

### 3. võimalus: gzipi rakendamine pistikprogrammi abil

Lisaks neile kahele käsitsi rakendatavale lahendusele on olemas ka variant, mille seadistamine nõuab vaid minimaalset vaeva: gzip-pakkimise aktiveerimine teie kasutatava **sisuhaldussüsteemi** **pistikprogrammi** abil. Sellised kasulikud laiendused, mida saate paari minutiga paigaldada ja oma vajadustele kohandada, on mõeldud peamiselt PHP-põhistele CMS-idele, nagu WordPress. Järgnev nimekiri sisaldab kolme kõige populaarsemat pistikprogrammi selle veebipäevikuprogrammi jaoks:

- **[W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/ "Web performance optimization for WordPress projects: W3 Total Cache")**: WordPressi pistikprogramm W3 Total Cache lubab veebilehe jõudluse märgatavat paranemist. Lisaks mitmesugustele vahemälumehhanismidele ja spetsiaalsele mobiilitoele sisaldab see SEO- ja kasutajasõbralikkuse pakett ka võimalusi gzip-pakkimise aktiveerimiseks.
- **[WP Rocket](https://wp-rocket.me/ "WP Rocket website")**: WP Rocket on veel üks klassikaline WordPressi vahemälupistikprogramm. See on lihtne kasutada ja aktiveerib kohe algusest peale kõik olulised jõudluse optimeerimise funktsioonid, sealhulgas gzip-pakkimise.
- **[WP Performance Score Booster](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: WP Performance Score Booster Download")**: WP Performance Score Boosteri pistikprogrammil on juba üle 10 000 aktiivse installatsiooni. Selle pistikprogrammi abil saate hõlpsasti gzip-pakkimise sisse lülitada ja oma veebiprojekti sisu, sealhulgas teksti, HTML-i, JavaScripti, CSS-i, XML-i ja muud, tõhusalt pakkida.

## Kuidas seadistada gzip NGINX-veebiserveris samm-sammult

Kui kasutate oma veebisaidi sisu edastamiseks NGINX-veebiserverit, võite projekti laadimisaja lühendamiseks kasutada ka gzip-pakkimist. Selleks tuleb lihtsalt konfigureerida `ngx_http_gzip_module`. Vaikimisi on `gzip`, mis lülitab pakkimisteenuse sisse või välja, välja lülitatud.

Selle seadistuse muutmiseks avage peamine konfiguratsioonifail `nginx.conf` ja otsige üles direktiiv `gzip`. Asendage `gzip off` väärtusega `gzip on`. Järgmises tabelis on selgitatud mõnede täiendavate direktiivide otstarvet ja valikuid, mida kasutatakse gzip-pakkimise seadistamiseks NGINXis:

<table>
  <thead>
    <tr>
      <th>Direktiiv</th>
      <th>Süntaks</th>
      <th>Vaikimisi seade</th>
      <th>Kirjeldus</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>Määrab pakkimisprotsessi käigus kasutatavate puhvrite arvu ja suuruse</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level level;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Määrab pakkimistaseme; kehtivad väärtused: 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>Määrab pakitava faili minimaalse pikkuse (baitides)</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version version;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Määrab pakitud vastuste jaoks vajaliku minimaalse HTTP-versiooni</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types content-type;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Määrab kindlaks, milliseid sisu tüüpe tuleks pakkida (nt CSS, JSON, XML)</td>
      <td></td>
    </tr>
  </tbody>
</table>

## Kuidas testida gzip-pakkimist

Kui olete oma veebisaidile gzip-pakkimise seadistanud, saate mitmesuguste tööriistade abil kontrollida, kas see toimib korrektselt ja kas veebiserver edastab kliendi päringutele vastuseks **pakitud sisu**. Üks selleks kõige enam soovitatavaid tööriistu on Google PageSpeed Insights. Sisestage lihtsalt oma veebisaidi mis tahes lehekülg ja tööriist analüüsib automaatselt selle sisu ning esitab aruande lehekülje tugevate ja nõrkade külgede kohta. Tulemuste hulgas leiate teavet selle kohta, **kas gzip-pakkimine on sisse lülitatud**.

Teise võimalusena võid teha kiire gzip-testi, kasutades veebisaidil [WhatsMyIP.org](https://www.whatsmyip.org/http-compression-test/ "HTTP Compression Test – WhatsMyIP.org") pakutavat HTTP-pakkimise testi.


This is a markdown version of: [https://www.ionos.com/et-ee/digitalguide/server/oskusteave/mis-on-gzip-ja-millised-on-selle-programmi-eelised/](https://www.ionos.com/et-ee/digitalguide/server/oskusteave/mis-on-gzip-ja-millised-on-selle-programmi-eelised/) for AI/LLM consumption.