Gzip-andmete pak­ki­mis­tark­vara on plat­vor­mi­ülene ja seda ka­su­ta­takse vee­biaren­duses ning vee­bi­pro­jek­ti­des laial­da­selt eelis­ta­tud pak­ki­mis­la­hen­dus­ena. Seda saab hõlpsasti ak­ti­vee­rida ja kasutada käsurea tööriista abil, mis aitab säästa sal­ves­tus­ruumi ja parandada süsteemi jõudlust.

Kuidas gzip töötab?

Gzip – lühend sõnadest „GNU zip“ – põhineb vabalt kät­te­saa­da­val Deflate-algo­rit­mil, mis ühendab LZ77 (Lempel-Ziv 77) pak­ki­mis­mee­todi Huffmani ko­dee­rin­guga. Neid meetodeid kasutades otsib gzip-failid dub­lee­ri­tud and­me­ja­da­sid. Kui programm leiab selliseid korduvaid jadasid, asendab ta need viitega esimesena esinevale jadale. Nende jär­jes­tuste pikkus on ta­va­li­selt piiratud 32 000 baitiga. Kui märgijada ei esine eelnevas 32 000 baitis, sal­ves­ta­takse see (pakkimata) gzip-faili, mis saab laiendi .gz.

Prot­se­duur piirdub üksikute failidega, mistõttu on vaja pak­ki­mis­prog­rammi tar, et luua nn tarball-arhiive laien­di­tega .tar.gz või .tgz. Vaikimisi kus­tu­ta­takse algne fail pärast gzip (kui gzip ra­ken­da­takse otse failile). Seda au­to­maat­set käitumist saab aga keelata, kasutades va­li­ku­list -k pa­ra­meet­rit. Pakitud failide lah­ti­pak­ki­miseks saab kasutada kas gunzip utiliiti või sobivat gzip käsku.

Ülevaade gzipi sün­tak­sist ja käskudest

Kuigi eri­ne­va­tele plat­vormi­dele on olemas graa­fi­li­sed ka­su­ta­ja­lii­de­sed, on gzip ka­su­ta­mine terminali või käsurea kaudu loo­mu­li­kult täiesti võimalik. Isegi algajatel ei tekita see raskusi, kuna gzip on klas­si­ka­line käsurea tööriist, mis on just selliseks ka­su­ta­miseks op­ti­mee­ri­tud. Üldine süntaks on järgmine:

gzip option file(s)
bash

Pa­ra­meet­rite määramine ei ole ko­hus­tus­lik. Kui väli jäetakse tühjaks, kasutab gzip lihtsalt vaikimisi seadeid. Näiteks piisab järg­mi­sest lihtsast käsust, et luua teks­ti­faili example.txt pakitud versioon:

gzip example.txt
bash

Kui soovite faile hiljem lahti pakkida või määrata pa­ra­meetreid pak­ki­mis­ta­seme, sal­ves­tus­koha või ori­gi­naal­faili käit­le­mise kohta, tuleb käskudele lisada vastavad pa­ra­meet­rid. Järgmises tabelis on esitatud ülevaade gzip olu­li­si­mast käsust:

Valik Kirjeldus
-1-9 Määrab pak­ki­mis­ta­seme (1–9), kus 1 annab kiireima ja kõige vähem pakitud tulemuse ning 9 pakub parimat, kuid aeg­lase­mat pakkimist; vaikimisi tase on 5
-r Skaneerib kataloogi (sh kõik alam­ka­ta­loo­gid) re­kur­siiv­selt ja pakub või laeb lahti kõik selles si­sal­du­vad failid
-f Sundib gzip-pakkimist ja kirjutab vajadusel üle ole­mas­ole­vad sa­ma­ni­me­li­sed failid
-d Laeb valitud faili lahti prae­gu­sesse kataloogi
-k Takistab ori­gi­naal­faili kus­tu­ta­mist
-l Kuvab teavet, näiteks pakitud faili pak­ki­mis­su­het
-c Saadab pakitud faili stan­dard­väl­jun­disse (ta­va­li­selt käsureale ühendatud ekraanile)
-q Võtab maha kõik gzip-sõnumid
-t Kont­rol­lib pakitud faili ter­vik­lik­kust
-h Loetleb kõik saadaval olevad valikud

Gzip-pakkimise ka­su­tus­juh­tu­mid

Tä­na­päe­val on gzip peaaegu plat­vor­mist sõltumatu ja seda saab vajaduse korral laiendada, tin­gi­mu­sel et valitud projekt vastab GPL-lit­sent­sile. Linuxi süs­teemi­des on see pak­ki­mis­va­hend ta­va­li­selt eel­ins­tal­li­tud või kergesti kät­te­saa­dav pakettide halduri kaudu. Ametlikul gzipi vee­bi­sai­dil on saadaval ka ver­sioo­nid macOS-ile ja Win­dow­sile. Neis süs­teemi­des saab seda tarkvara igal ajal kasutada, et säästa sal­ves­tus­ruumi.

Teine oluline ra­ken­dus­vald­kond on veeb. Vee­bi­ser­ve­rid, nagu Apache, on juba aastaid toetanud gzip-pakkimist, ning tä­na­päe­va­sed brauserid suudavad pakitud faile tõl­gen­dada ja neid veebilehe kuvamise ajal lahti pakkida. Just siin saab gzip oma eeliseid täie­li­kult ära kasutada, sest kui see funkt­sioon on sisse lülitatud, pakib vee­bi­ser­ver au­to­maat­selt nii üleslaa­di­tud sisu kui ka serveris dü­naa­mi­li­selt ge­ne­ree­ri­tud veebilehe elemente. See võib veebilehe laa­di­mis­aega oluliselt lühendada, olles osa veebilehe põ­hi­li­sest op­ti­mee­ri­mi­sest. Samal ajal tegeleb brauser taustal lah­ti­pak­ki­mi­sega, ilma et see tarbiks li­san­du­vat ri­ba­laiust. Sellest jõudluse kasvust saavad kasu eelkõige mo­bii­li­ka­su­ta­jad ning see võib kaudselt parandada teie vee­bi­saidi po­sit­siooni ot­sin­gu­moo­to­ri­tes.

Kuidas kasutada gzip-pakkimist oma Apache-vee­bi­pro­jek­tis

Vee­bi­ser­ve­rid pakuvad gzip-pakkimist ta­va­li­selt moodulina, mis tuleb lihtsalt sisse lülitada. Tä­na­päe­val on paljudel vee­bi­ma­ju­tus­tee­nuse pak­ku­ja­tel see funkt­sioon vaikimisi ak­ti­vee­ri­tud, kuigi varem see alati nii ei olnud. Kui te ei ole kindel, kas teie ma­ju­tus­tee­nuse pakkuja toetab gzip-pakkimist, võite kas otse nendega ühendust võtta või ise käsitsi kont­rol­lida.

Apache vee­bi­ser­ve­ris saate mooduli seadeid kont­rol­lida lihtsa phpinfo() väljundi abil. HTTP_ACCEPT_ENCODING kirje näitab, milline pak­ki­mis­mee­tod on valitud – või kas pakkimine on üldse sisse lülitatud. Kui gzip on saadaval, on teil kolm erinevat võimalust seda pak­ki­mis­va­hen­dit oma va­ja­dus­tele vastavalt kasutada.

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

.htaccess-faili abil saate määrata ka­ta­loo­gi­põ­hi­seid seadeid ja kon­fi­gu­ree­rida vee­bi­ser­ve­rit reaalajas. See toimib seetõttu, et kon­fi­gu­rat­sioo­ni­faili – mis asub ta­va­li­selt juur­ka­ta­loo­gis– loetakse au­to­maat­selt iga ser­ve­risse saabuva päringu korral. Mõnede vee­bi­ma­ju­tus­tee­nuse pakkujate puhul võib .htaccess aga asuda mõnes muus kaustas, olla peidetud või isegi juur­de­pää­su­piiran­guga. Sellisel juhul on teie ainus võimalus võtta ühendust oma vee­bi­ma­ju­tus­tee­nuse pakkujaga ja taotleda juur­de­pääsu. Kui teil on võimalik muudatusi teha, saate gzip-pakkimise lubada, kasutades Deflate-algoritmi moodulit (mod_deflate), lisades järgmise koodi faili .htaccess:

<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

mod_gzip ja mod_deflate mooduli ka­su­ta­miseks on vaja ka vee­bi­ma­ju­taja luba.

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

Gzip-pakkimist on võimalik ak­ti­vee­rida 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 muut­miseks. Iga faili algusse tuleb lisada järgmine koodirida:

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

3. võimalus: gzipi ra­ken­da­mine pis­tik­prog­rammi abil

Lisaks neile kahele käsitsi ra­ken­da­ta­vale la­hen­dus­ele on olemas ka variant, mille sea­dis­ta­mine nõuab vaid mi­ni­maal­set vaeva: gzip-pakkimise ak­ti­vee­ri­mine teie ka­su­ta­tava si­su­hal­dus­süs­teemi pis­tik­prog­rammi abil. Sellised kasulikud laien­dused, mida saate paari minutiga pai­gal­dada ja oma va­ja­dus­tele kohandada, on mõeldud peamiselt PHP-põhistele CMS-idele, nagu WordPress. Järgnev nimekiri sisaldab kolme kõige po­pu­laar­se­mat pis­tik­prog­rammi selle vee­bi­päe­vi­ku­prog­rammi jaoks:

  • W3 Total Cache: Word­Pressi pis­tik­prog­ramm W3 Total Cache lubab veebilehe jõudluse mär­ga­ta­vat pa­ra­ne­mist. Lisaks mit­me­su­gus­tele va­he­mä­lu­meh­ha­nismi­dele ja spet­siaal­sele mo­bii­li­to­ele sisaldab see SEO- ja ka­su­ta­ja­sõb­ra­lik­kuse pakett ka võimalusi gzip-pakkimise ak­ti­vee­ri­miseks.
  • WP Rocket: WP Rocket on veel üks klas­si­ka­line Word­Pressi va­he­mä­lu­pis­tik­prog­ramm. See on lihtne kasutada ja ak­ti­vee­rib kohe algusest peale kõik olulised jõudluse op­ti­mee­ri­mise funkt­sioo­nid, seal­hul­gas gzip-pakkimise.
  • WP Per­for­mance Score Booster: WP Per­for­mance Score Boosteri pis­tik­prog­ram­mil on juba üle 10 000 aktiivse ins­tal­lat­siooni. Selle pis­tik­prog­rammi abil saate hõlpsasti gzip-pakkimise sisse lülitada ja oma vee­bi­pro­jekti sisu, seal­hul­gas teksti, HTML-i, Ja­vaSc­ripti, CSS-i, XML-i ja muud, tõhusalt pakkida.

Kuidas sea­dis­tada gzip NGINX-vee­bi­ser­ve­ris samm-sammult

Kui kasutate oma vee­bi­saidi sisu edas­ta­miseks NGINX-vee­bi­ser­ve­rit, võite projekti laa­di­mis­aja lü­hen­da­miseks kasutada ka gzip-pakkimist. Selleks tuleb lihtsalt kon­fi­gu­ree­rida ngx_http_gzip_module. Vaikimisi on gzip, mis lülitab pak­ki­mis­tee­nuse sisse või välja, välja lülitatud.

Selle sea­dis­tuse muut­miseks avage peamine kon­fi­gu­rat­sioo­ni­fail nginx.conf ja otsige üles direktiiv gzip. Asendage gzip off väär­tu­sega gzip on. Järgmises tabelis on sel­gi­ta­tud mõnede täien­da­vate di­rek­tii­vide otstarvet ja valikuid, mida ka­su­ta­takse gzip-pakkimise sea­dis­ta­miseks NGINXis:

Direktiiv Süntaks Vaikimisi seade Kirjeldus
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; Määrab pak­ki­mis­prot­sessi käigus ka­su­ta­ta­vate puhvrite arvu ja suuruse
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; Määrab pak­ki­mis­ta­seme; kehtivad väärtused: 1–9
gzip_min_length gzip_min_length length; gzip_min_length 20; Määrab pakitava faili mi­ni­maalse pikkuse (baitides)
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Määrab pakitud vastuste jaoks vajaliku mi­ni­maalse HTTP-versiooni
gzip_types gzip_types content-type; gzip_types text/html; Määrab kindlaks, milliseid sisu tüüpe tuleks pakkida (nt CSS, JSON, XML)

Kuidas testida gzip-pakkimist

Kui olete oma vee­bi­sai­dile gzip-pakkimise sea­dis­ta­nud, saate mit­me­su­guste töö­riis­tade abil kont­rol­lida, kas see toimib kor­rekt­selt ja kas vee­bi­ser­ver edastab kliendi pä­rin­gu­tele vastuseks pakitud sisu. Üks selleks kõige enam soo­vi­ta­ta­vaid tööriistu on Google PageSpeed Insights. Sisestage lihtsalt oma vee­bi­saidi mis tahes lehekülg ja tööriist analüüsib au­to­maat­selt 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õi­ma­lu­sena võid teha kiire gzip-testi, kasutades vee­bi­sai­dil WhatsMyIP.org pakutavat HTTP-pakkimise testi.

Go to Main Menu