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:
gzip option file(s)bashParameetrite 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:
gzip example.txtbashKui 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:
| Valik | Kirjeldus |
|---|---|
-1 … -9
|
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
|
-r
|
Skaneerib kataloogi (sh kõik alamkataloogid) rekursiivselt ja pakub või laeb lahti kõik selles sisalduvad failid |
-f
|
Sundib gzip-pakkimist ja kirjutab vajadusel üle olemasolevad samanimelised failid |
-d
|
Laeb valitud faili lahti praegusesse kataloogi |
-k
|
Takistab originaalfaili kustutamist |
-l
|
Kuvab teavet, näiteks pakitud faili pakkimissuhet |
-c
|
Saadab pakitud faili standardväljundisse (tavaliselt käsureale ühendatud ekraanile) |
-q
|
Võtab maha kõik gzip-sõnumid |
-t
|
Kontrollib pakitud faili terviklikkust |
-h
|
Loetleb kõik saadaval olevad valikud |
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 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:
<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>txtmod_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
ob_start("ob_gzhandler");
?>php3. 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: 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: 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: 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:
| Direktiiv | Süntaks | Vaikimisi seade | Kirjeldus | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Määrab pakkimisprotsessi käigus kasutatavate puhvrite arvu ja suuruse |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Määrab pakkimistaseme; kehtivad väärtused: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Määrab pakitava faili minimaalse pikkuse (baitides) | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Määrab pakitud vastuste jaoks vajaliku minimaalse 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 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 pakutavat HTTP-pakkimise testi.