# Kas ir gzip un kā šo rīku izmanto?

Datu saspiešanas programma „gzip“ ir daudzplatformas un tiek plaši izmantota tīmekļa izstrādē un tīmekļa projektos kā vispārpieņemts saspiešanas risinājums. To var viegli aktivizēt un lietot, izmantojot komandrindas rīku, kas palīdz ietaupīt atmiņas vietu un uzlabot sistēmas veiktspēju.

## Kā darbojas gzip?

Gzip — saīsinājums no „GNU zip“ — balstās uz brīvi pieejamo Deflate algoritmu, kas apvieno LZ77 (Lempel-Ziv 77) saspiešanas metodi ar Huffman kodēšanu. Izmantojot šīs metodes, gzip faili meklē atkārtojošās datu virknes. Ja programma sastopas ar šādām **atkārtojošām sekvencēm**, tā tās aizstāj ar atsauci uz virkni, kas parādās pirmā. Šo secību garums parasti ir **ierobežots līdz 32 000 baitiem**. Ja rakstzīmju virkne neparādās iepriekšējos 32 000 baitos, tā tiek saglabāta (nesaspiesta) gzip failā, kuram tiek piešķirts .gz paplašinājums.

Šī procedūra attiecas tikai uz atsevišķiem failiem, tāpēc, lai izveidotu tā sauktos tarball arhīvus ar paplašinājumiem *.tar.gz* vai *.tgz*, ir nepieciešama **arhivēšanas programma** tar. Pēc noklusējuma sākotnējais fails tiek dzēsts pēc saspiešanas (ja `gzip` tiek piemērota tieši failam). Tomēr jūs varat atspējot šo automātisko darbību, izmantojot papildu `-k` parametru. Lai dekompresētu saspiestos failus, jūs varat izmantot vai nu `gunzip` utilītu, vai atbilstošo `gzip` komandu.

## gzip sintakses un komandu pārskats

Lai gan dažādām platformām ir pieejamas grafiskās lietotāja saskarnes, `gzip`, protams, ir pilnīgi iespējams izmantot, izmantojot komandas terminālī vai komandu uzvednē. Ar to viegli tiks galā pat iesācēji, jo `gzip` ir **klasisks komandrindas rīks**, kas ir optimizēts šādai lietošanai. Vispārīgā sintakse ir šāda:

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

Nav nepieciešams norādīt parametrus. Ja lauks paliek tukšs, `gzip` vienkārši izmanto noklusējuma iestatījumus. Piemēram, lai izveidotu teksta faila `example.txt` saspiestu versiju, pietiek ar šādu vienkāršu komandu:

```bash
gzip example.txt
```

Lai failus izpakotu vēlāk vai norādītu prasības attiecībā uz **saspiešanas līmeni**, **saglabāšanas vietu** vai to, kā rīkoties ar **oriģinālo failu**, komandām būs nepieciešami atbilstoši parametri. Turpmākajā tabulā ir sniegts pārskats par `gzip` svarīgākajām komandām:

<table>
  <thead>
    <tr>
      <th>Iespēja</th>
      <th>Apraksts</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`-1` … `-9`</td>
      <td>Nosaka saspiešanas līmeni (1–9), kur `1` nodrošina ātrāko un vismazāk saspiestu rezultātu, bet `9` piedāvā labāko, taču lēnāko saspiešanu; noklusējuma līmenis ir `5`</td>
    </tr>
    <tr>
      <td>`-r`</td>
      <td>Rekursīvi pārskata direktoriju (ieskaitot visus apakšdirektorijus) un saspiež vai atspiež visus tajā esošos failus</td>
    </tr>
    <tr>
      <td>`-f`</td>
      <td>Piespiež gzip saspiešanu un nepieciešamības gadījumā pārraksta esošos failus ar tādu pašu nosaukumu</td>
    </tr>
    <tr>
      <td>`-d`</td>
      <td>Atpakoj izvēlēto failu pašreizējā direktorijā</td>
    </tr>
    <tr>
      <td>`-k`</td>
      <td>Neļauj dzēst sākotnējo failu</td>
    </tr>
    <tr>
      <td>`-l`</td>
      <td>Parāda informāciju, piemēram, saspiestā faila saspiešanas koeficientu</td>
    </tr>
    <tr>
      <td>`-c`</td>
      <td>Izvada saspiesto failu uz standarta izvadi (parasti uz ekrānu, kas savienots ar komandu rindu)</td>
    </tr>
    <tr>
      <td>`-q`</td>
      <td>Aiztur visus gzip ziņojumus</td>
    </tr>
    <tr>
      <td>`-t`</td>
      <td>Pārbauda saspiestā faila integritāti</td>
    </tr>
    <tr>
      <td>`-h`</td>
      <td>Uzskaita visas pieejamās opcijas</td>
    </tr>
  </tbody>
</table>

## Gzip saspiešanas lietošanas gadījumi

Šodien `gzip` ir gandrīz neatkarīgs no platformas un to var paplašināt pēc vajadzības, ja vien izvēlētais projekts atbilst GPL licencei. **Linux sistēmās** šis saspiešanas rīks parasti ir iepriekš instalēts vai viegli pieejams, izmantojot pakotņu pārvaldnieku. Oficiālajā [gzip tīmekļa vietnē](https://www.gzip.org/ "gzip.org – the official website of the compression program") ir pieejamas arī versijas **macOS un Windows**. Šajās sistēmās programmatūru var izmantot jebkurā brīdī, lai **ietaupītu atmiņas vietu**.

Vēl viena svarīga pielietojuma joma ir **tīmeklis**. Tīmekļa serveri, piemēram, Apache, jau gadiem ilgi atbalsta gzip saspiešanu, un mūsdienu pārlūki spēj atpazīt saspiestos failus un **tos atspiest tīmekļa vietnes attēlošanas laikā**. Tieši šeit `gzip` var pilnībā izcelties, jo, ja tā ir ieslēgta, tīmekļa serveris automātiski saspiež gan augšupielādēto saturu, gan serverī dinamiski ģenerētos tīmekļa vietnes elementus. Tas var ievērojami **samazināt tīmekļa vietnes ielādes laiku** kā daļu no tīmekļa vietnes pamata optimizācijas. Tikmēr pārlūks dekompresiju veic fonā, nepatērējot papildu joslas platumu. Šis veiktspējas uzlabojums ir īpaši izdevīgs **mobilo ierīču lietotājiem**, un tas var netieši uzlabot jūsu tīmekļa vietnes pozīciju meklētājprogrammās.

## Kā izmantot gzip saspiešanu savā Apache tīmekļa projektā

Tīmekļa serveri parasti piedāvā gzip saspiešanu kā moduli, kuru vienkārši **jāaktivizē**. Šodien daudzi tīmekļa hostingu pakalpojumu sniedzēji šo funkciju aktivizē pēc noklusējuma, savukārt agrāk tas nebija vienmēr tā. Ja neesat pārliecināts, vai jūsu hostinga pakalpojumu sniedzējs atbalsta gzip saspiešanu, varat vai nu sazināties ar viņiem tieši, vai arī pats veikt **manuālu pārbaudi**.

Apache tīmekļa serverī moduļa iestatījumus var pārbaudīt, izmantojot vienkāršu `phpinfo()` izvadi. `HTTP_ACCEPT_ENCODING` ieraksts parādīs, kura saspiešanas metode ir izvēlēta — vai arī to, vai saspiešana vispār ir ieslēgta. Ja `gzip` ir pieejams, jums ir trīs dažādas iespējas izmantot šo saspiešanas rīku atbilstoši savām vajadzībām.

### 1. variants: gzip saspiešanas iespējošana failā .htaccess

Izmantojot .htaccess failu, varat definēt konkrētiem katalogiem paredzētus iestatījumus un konfigurēt tīmekļa serveri reāllaikā. Tas darbojas tāpēc, ka konfigurācijas fails — kas parasti atrodas **sakņu katalogā**— tiek automātiski nolasīts katrā pieprasījumā, kas nonāk serverī. Tomēr dažu tīmekļa hostingu pakalpojumu sniedzēju gadījumā `.htaccess` var atrasties citā mapē, būt paslēpts vai pat ierobežots piekļuvei. Šādā gadījumā vienīgā iespēja ir sazināties ar hostinga pakalpojumu sniedzēju un **lūgt piekļuvi**. Ja jums ir iespēja veikt izmaiņas, varat aktivizēt gzip kompresiju, izmantojot moduli Deflate algoritmam (`mod_deflate`), pievienojot šādu kodu `.htaccess` failam:

```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 Lai izmantotu `mod_gzip` un `mod_deflate` moduli, jums būs nepieciešama arī jūsu tīmekļa mitinātāja atļauja.

### 2. variants: gzip saspiešanas iespējošana ar PHP

Gzip saspiešanu var aktivizēt, izmantojot vienkāršu PHP komandu. Trūkums ir tas, ka kods ir jāpievieno **katram PHP failam atsevišķi**. Tāpēc šo iespēju vajadzētu izmantot tikai tad, ja jums nav nepieciešamās atļaujas, lai rediģētu failu `.htaccess` “. Katra faila sākumā jāievieto šāda koda rinda:

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

### 3. variants: gzip ieviešana, izmantojot spraudni

Papildus šiem diviem manuālajiem risinājumiem pastāv arī variants, kura konfigurēšanai nepieciešams tikai minimāls piepūles ieguldījums: gzip saspiešanas aktivizēšana, izmantojot **spraudni** jūsu izmantotajai **satura pārvaldības sistēmai**. Šādi noderīgi paplašinājumi, kurus varat instalēt dažu minūšu laikā un pielāgot savām vajadzībām, galvenokārt ir paredzēti tādiem PHP bāzētiem CMS kā WordPress. Turpmākajā sarakstā ir minēti trīs populārākie spraudņi šai emuāru programmatūrai:

- **[W3 Total Cache](https://wordpress.org/plugins/w3-total-cache/ "Web performance optimization for WordPress projects: W3 Total Cache")**: WordPress spraudnis „W3 Total Cache“ sola ievērojami uzlabotu tīmekļa vietnes darbību. Papildus dažādiem kešēšanas mehānismiem un īpaši pielāgotam atbalstam mobilajām ierīcēm šis SEO un lietojamības rīku kopums ietver arī iespējas aktivizēt gzip kompresiju.
- **[WP Rocket](https://wp-rocket.me/ "WP Rocket website")**: WP Rocket ir vēl viens klasisks WordPress kešēšanas spraudnis. Tas ir viegli lietojams un jau no paša sākuma aktivizē visas galvenās veiktspējas optimizācijas funkcijas, tostarp gzip kompresiju.
- **[WP Performance Score Booster](https://wordpress.org/plugins/wp-performance-score-booster/ "WordPress.org: WP Performance Score Booster Download")**: WP Performance Score Booster spraudnis jau ir pārsniedzis 10 000 aktīvo instalāciju. Ar šo spraudni jūs varat viegli aktivizēt gzip un efektīvi saspiest jūsu tīmekļa projekta saturu, ieskaitot tekstu, HTML, JavaScript, CSS, XML un citu.

## Kā soli pa solim konfigurēt gzip NGINX tīmekļa serverī

Ja savu tīmekļa vietnes saturu nodrošināt, izmantojot NGINX tīmekļa serveri, varat izmantot arī gzip saspiešanu, lai samazinātu projekta ielādes laiku. Lai to izdarītu, vienkārši jākonfigurē `ngx_http_gzip_module`. Noklusējumā `gzip` direktīva, kas ieslēdz vai izslēdz saspiešanas pakalpojumu, ir atspējota.

Lai mainītu šo iestatījumu, atveriet galveno konfigurācijas failu `nginx.conf` un atrodiet direktīvu `gzip`. Aizstājiet `gzip off` ar `gzip on`. Turpmākajā tabulā ir izskaidrots dažu papildu direktīvu mērķis un opcijas, kuras izmanto gzip saspiešanas konfigurēšanai NGINX:

<table>
  <thead>
    <tr>
      <th>Direktīva</th>
      <th>Sintakse</th>
      <th>Noklusējuma iestatījums</th>
      <th>Apraksts</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>Nosaka saspiešanas procesā izmantoto buferu skaitu un izmēru</td>
    </tr>
    <tr>
      <td>`gzip_comp_level`</td>
      <td>`gzip_comp_level level;`</td>
      <td>`gzip_comp_level 1;`</td>
      <td>Nosaka saspiešanas līmeni; pieļaujamās vērtības: 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>Nosaka minimālo garumu (baitos) saspiežamajam failam</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_http_version`</td>
      <td>`gzip_http_version version;`</td>
      <td>`gzip_http_version 1.1;`</td>
      <td>Nosaka minimālo HTTP versiju, kas nepieciešama saspiestajām atbildēm</td>
      <td></td>
    </tr>
    <tr>
      <td>`gzip_types`</td>
      <td>`gzip_types content-type;`</td>
      <td>`gzip_types text/html;`</td>
      <td>Nosaka, kādi satura tipi ir jāsaspiež (piem., CSS, JSON, XML)</td>
      <td></td>
    </tr>
  </tbody>
</table>

## Kā pārbaudīt gzip saspiešanu

Kad būsiet konfigurējis gzip saspiešanu savai tīmekļa vietnei, varat izmantot dažādus rīkus, lai pārliecinātos, ka tā darbojas pareizi un ka jūsu tīmekļa serveris atbildot uz klientu pieprasījumiem nosūta **saspiestu saturu**. Viens no visvairāk ieteicamajiem rīkiem šim nolūkam ir Google PageSpeed Insights. Vienkārši ievadiet jebkuru lappusi no jūsu vietnes, un rīks automātiski analizēs tās saturu un sniegs ziņojumu par lappuses veiktspējas stiprajām un vājajām pusēm. Rezultātos jūs atradīsiet informāciju par **to, vai gzip kompresija ir ieslēgta**.

Varat arī veikt ātru gzip testu, izmantojot HTTP saspiešanas testu vietnē [WhatsMyIP.org](https://www.whatsmyip.org/http-compression-test/ "HTTP Compression Test – WhatsMyIP.org").


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/serveris/prasmes-un-zinasanas/kas-ir-gzip-un-kadas-ir-sis-programmas-prieksrocibas/](https://www.ionos.com/lv-lv/digitalguide/serveris/prasmes-un-zinasanas/kas-ir-gzip-un-kadas-ir-sis-programmas-prieksrocibas/) for AI/LLM consumption.