Duomenų su­spau­di­mo programa „gzip“ yra su­de­ri­na­ma su įvai­rio­mis plat­for­mo­mis ir plačiai naudojama ži­nia­tink­lio kūrimo srityje bei ži­nia­tink­lio pro­jek­tuo­se kaip pag­rin­di­nis su­spau­di­mo spren­di­mas. Ją galima lengvai įjungti ir valdyti naudojant ko­man­di­nės eilutės įrankį, o tai padeda sutaupyti saugojimo vietos ir pagerinti sistemos našumą.

Kaip veikia gzip?

Gzip — su­trum­pi­ni­mas nuo „GNU zip“ — remiasi laisvai prieinamu „Deflate“ algoritmu, kuris derina LZ77 (Lempel-Ziv 77) su­spau­di­mo metodą su Huffmano kodavimu. Naudodama šias tech­no­lo­gi­jas, gzip programa ieško pa­si­kar­to­jan­čių duomenų sekų. Jei programa aptinka tokias pa­si­kar­to­jan­čias sekas, ji jas pakeičia nuoroda į pirmą kartą pa­si­ro­džiu­sią seką. Šių sekų ilgis paprastai ribojamas iki 32 000 baitų. Jei simbolių eilutė ne­pa­si­kar­to­ja anks­tes­niuo­se 32 000 baitų, ji saugoma (ne­su­spau­džia­ma) gzip faile, kurio plėtinys yra .gz.

Ši procedūra taikoma tik at­ski­riems failams, todėl norint sukurti va­di­na­muo­sius „tarball“ archyvus su plė­ti­niais .tar.gz arba .tgz, reikia naudoti ar­chy­va­vi­mo programą „tar“. Pagal nu­ma­ty­tuo­sius nu­sta­ty­mus ori­gi­na­lus failas iš­tri­na­mas po gzip paudimo (kai programa taikoma tie­sio­giai failui). Tačiau šį au­to­ma­ti­nį veikimą galima išjungti naudojant papildomą -k parametrą. Norint išpakuoti su­spaus­tus failus, galima naudoti arba gunzip prog­ra­mė­lę, arba ati­tin­ka­mą gzip komandą.

„gzip“ sintaksės ir komandų apžvalga

Nors įvairioms plat­for­moms yra sukurtos grafinės vartotojo sąsajos, gzip, žinoma, visiškai galima naudoti ir per komandas terminale arba komandų eilutėje. Tai nesudarys sunkumų net pra­de­dan­tie­siems, nes gzip yra klasikinė ko­man­di­nės eilutės priemonė, pri­tai­ky­ta būtent tokiam nau­do­ji­mui. Bendroji sintaksė atrodo taip:

gzip option file(s)
bash

Nustatyti pa­ra­met­rus nebūtina. Jei laukelis pa­lie­ka­mas tuščias, gzip naudoja nu­ma­ty­tuo­sius nu­sta­ty­mus. Pa­vyz­džiui, norint sukurti suspaustą teksto failo example.txt versiją, pakanka šios paprastos komandos:

gzip example.txt
bash

Jei norite išpakuoti failus vėliau arba nurodyti nu­sta­ty­mus, su­si­ju­sius su su­spau­di­mo lygiu, saugojimo vieta ar ori­gi­na­laus failo tvarkymu, komandoms reikės ati­tin­ka­mų parametrų. Toliau pa­teik­to­je lentelėje pateikta gzip svar­biau­sių komandų apžvalga:

Pa­si­rin­ki­mas Aprašymas
-1-9 Nustato su­spau­di­mo lygį (1–9), kur 1 užtikrina grei­čiau­sią ir ma­žiau­siai suspaustą rezultatą, o 9 siūlo geriausią, bet lėčiausią su­spau­di­mą; nu­ma­ty­ta­sis lygis yra 5
-r Re­kur­sy­viai nuskaito katalogą (įskaitant visus pa­ka­ta­lo­gius) ir su­spau­džia arba išpakuoja visus jame esančius failus
-f Priverčia naudoti gzip su­spau­di­mą ir, jei reikia, perrašo esamus failus su tuo pačiu pa­va­di­ni­mu
-d Išpakuoja pa­si­rink­tą failą į dabartinį katalogą
-k Neleidžia ištrinti ori­gi­na­laus failo
-l Rodo in­for­ma­ci­ją, pvz., suspausto failo su­spau­di­mo ko­e­fi­ci­en­tą
-c Išveda suspaustą failą į stan­dar­ti­nę išvestį (paprastai į ekraną, prijungtą prie komandos eilutės)
-q Slopina visus gzip pra­ne­ši­mus
-t Patikrina suspaustų failų vi­en­ti­su­mą
-h Išvardija visas galimas parinktis

„gzip“ su­spau­di­mo taikymo atvejai

Šiandien gzip yra beveik ne­pri­klau­so­mas nuo plat­for­mos ir gzip galima išplėsti pagal poreikį, jeigu tik pa­si­rink­tas projektas atitinka GPL li­cen­ci­jos rei­ka­la­vi­mus. „Linux“ sistemose šis su­spau­di­mo įrankis paprastai yra iš anksto įdiegtas arba lengvai pri­ei­na­mas per paketų tvarkyklę. Ofi­cia­lio­je „gzip“ sve­tai­nė­je taip pat siūlomos versijos, skirtos „macOS“ ir „Windows“ sistemoms. Šiose sistemose šią prog­ra­mi­nę įrangą galite naudoti bet kuriuo metu, kad su­tau­py­tu­mė­te saugojimo vietos.

Kita svarbi taikymo sritis – in­ter­ne­tas. Tinklo serveriai, tokie kaip „Apache“, jau daugelį metų palaiko „gzip“ su­spau­di­mą, o šiuo­lai­ki­nės naršyklės sugeba atpažinti su­spaus­tus failus ir juos išpakuoti at­vaiz­duo­da­mos svetainę. Būtent čia gzip gali vi­sa­pu­siš­kai pa­si­reikš­ti, nes, kai ši funkcija įjungta, tinklo serveris au­to­ma­tiš­kai su­spau­džia tiek įkeltą turinį, tiek di­na­miš­kai ge­ne­ruo­ja­mus svetainės elementus serveryje. Tai gali žymiai su­trum­pin­ti svetainės įkėlimo laiką ir yra viena iš pag­rin­di­nių svetainės op­ti­mi­za­vi­mo priemonių. Tuo tarpu naršyklė atlieka iš­pa­kuo­ji­mą fone, ne­su­nau­do­da­ma papildomo pra­lai­du­mo. Šis našumo pa­di­dė­ji­mas ypač naudingas mobiliųjų įrenginių nau­do­to­jams ir gali ne­tie­sio­giai pagerinti jūsų svetainės reitingą paieškos sistemose.

Kaip naudoti „gzip“ su­spau­di­mą savo „Apache“ ži­nia­tink­lio projekte

Paprastai ži­nia­tink­lio serveriai siūlo „gzip“ su­spau­di­mą kaip modulį, kurį tereikia įjungti. Šiandien daugelis ži­nia­tink­lio prie­glo­bos paslaugų teikėjų šią funkciją įjungia pagal nu­ma­ty­tuo­sius nu­sta­ty­mus, nors anksčiau taip nebūdavo visada. Jei nesate tikri, ar jūsų prie­glo­bos paslaugų teikėjas palaiko „gzip“ su­spau­di­mą, galite tie­sio­giai su­si­siek­ti su juo arba patys atlikti pa­tik­ri­ni­mą rankiniu būdu.

„Apache“ ži­nia­tink­lio serveryje modulio nu­sta­ty­mus galima pa­tik­rin­ti naudojant paprastą phpinfo() išvestį. HTTP_ACCEPT_ENCODING įraše bus nurodyta, koks su­spau­di­mo metodas yra pa­si­rink­tas – arba ar su­spau­di­mas iš viso įjungtas. Jei gzip yra pri­ei­na­mas, turite tris skir­tin­gas galimybes, kaip šį su­spau­di­mo įrankį pri­tai­ky­ti savo po­rei­kiams.

1 variantas: Įjunkite „gzip“ su­spau­di­mą „.htaccess“ faile

Naudodami .htaccess failą, galite nustatyti konk­re­čiam katalogui skirtus pa­ra­met­rus ir kon­fi­gū­ruo­ti savo ži­nia­tink­lio serverį realiuoju laiku. Tai veikia, nes kon­fi­gū­ra­ci­jos failas – paprastai esantis pag­rin­di­nia­me kataloge– au­to­ma­tiš­kai nu­skai­to­mas kiekvieno į serverį gaunamo už­klau­si­mo metu. Tačiau kai kurių ži­nia­tink­lio prie­glo­bos paslaugų teikėjų atveju .htaccess gali būti kitame aplanke, paslėptas arba netgi už­blo­kuo­tas. Tokiu atveju vie­nin­te­lė išeitis – su­si­siek­ti su prie­glo­bos paslaugų teikėju ir paprašyti suteikti prieigą. Jei galite daryti pa­kei­ti­mus, galite įjungti gzip su­spau­di­mą naudodami modulį Deflate al­go­rit­mui (mod_deflate), į .htaccess failą įterpdami šį kodą:

<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

Be to, norėdami naudoti mod_gzip ir mod_deflate modulius, turėsite gauti savo interneto prie­glo­bos paslaugų teikėjo leidimą.

2 variantas: Įjunkite „gzip“ su­spau­di­mą per PHP

Gzip su­spau­di­mą galima įjungti naudojant paprastą PHP komandą. Trūkumas yra tas, kad šį kodą reikia įterpti atskirai į kiekvieną PHP failą. Todėl šią galimybę reikėtų rinktis tik tuo atveju, jei neturite reikiamų teisių redaguoti failą .htaccess “. Kiekvieno failo pradžioje reikia įterpti šią kodo eilutę:

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

3 variantas: „gzip“ įdiegimas naudojant įskiepį

Be šių dviejų rankinių sprendimų, yra ir variantas, kurio įdiegimas rei­ka­lau­ja tik minimalių pastangų: gzip su­spau­di­mo įjungimas naudojant jūsų turimos turinio valdymo sistemos įskiepį. Tokie naudingi įskiepiai, kuriuos galima įdiegti per kelias minutes ir pri­tai­ky­ti prie savo poreikių, pir­miau­sia skirti tokioms PHP pa­grįs­toms turinio valdymo sistemoms kaip „WordPress“. Toliau pa­teik­ta­me sąraše nurodyti trys po­pu­lia­riau­si įskiepiai, skirti tink­la­raš­čių prog­ra­mi­nei įrangai:

  • „W3 Total Cache“: „WordPress“ įskiepis „W3 Total Cache“ žada pa­ste­bi­mai pagerinti svetainės veikimą. Be įvairių talpyklos me­cha­niz­mų ir spe­cia­lios mo­bi­lie­siems įren­gi­niams skirtos paramos, šis SEO ir patogumo rinkinys taip pat apima parinktis, lei­džian­čias įjungti „gzip“ su­spau­di­mą.
  • WP Rocket: WP Rocket yra dar vienas kla­si­ki­nis WordPress talpyklos įskiepis. Jis yra lengvai nau­do­ja­mas ir nuo pat pradžių aktyvuoja visas pag­rin­di­nes našumo op­ti­mi­za­vi­mo funkcijas, įskaitant gzip su­spau­di­mą.
  • WP Per­for­man­ce Score Booster: „WP Per­for­man­ce Score Booster“ įskiepio aktyvių įdiegimų skaičius jau viršijo 10 000. Naudodami šį įskiepį, galite lengvai įjungti „gzip“ ir efek­ty­viai suspausti savo interneto projekto turinį, įskaitant tekstą, HTML, Ja­vaSc­ript, CSS, XML ir kt.

Kaip žingsnis po žingsnio su­kon­fi­gū­ruo­ti gzip NGINX ži­nia­tink­lio serveryje

Jei savo svetainės turinį pa­tei­kia­te naudodami „NGINX“ ži­nia­tink­lio serverį, taip pat galite pa­si­nau­do­ti „gzip“ su­spau­di­mu, kad su­trum­pin­tu­mė­te projekto įkėlimo laiką. Tam reikia tik su­kon­fi­gū­ruo­ti ngx_http_gzip_module. Pagal nu­ma­ty­tuo­sius nu­sta­ty­mus gzip direktyva, kuri įjungia arba išjungia su­spau­di­mo paslaugą, yra išjungta.

Norėdami pakeisti šį nustatymą, ati­da­ry­ki­te pag­rin­di­nį kon­fi­gū­ra­ci­jos failą nginx.conf ir suraskite gzip direktyvą. Pa­kei­s­ki­te gzip off į gzip on. Toliau pa­teik­to­je lentelėje pa­aiš­ki­na­ma kai kurių papildomų direktyvų, naudojamų gzip su­spau­di­mui NGINX kon­fi­gū­ruo­ti, paskirtis ir galimybės:

Direktyva Sintaksė Nu­ma­ty­ta­sis nu­sta­ty­mas Aprašymas
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k \ 16 8k; Nustato su­spau­di­mo proceso metu naudojamų buferių skaičių ir dydį
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; Nustato su­spau­di­mo lygį; galimos reikšmės: 1–9
gzip_min_length gzip_min_length length; gzip_min_length 20; Nurodo minimalų su­spau­džia­mo failo ilgį (baitais)
gzip_http_version gzip_http_version version; gzip_http_version 1.1; Nurodo minimalią HTTP versiją, rei­ka­lin­gą su­spaus­tiems at­sa­ky­mams
gzip_types gzip_types content-type; gzip_types text/html; Nustato, kokie turinio tipai turėtų būti suspausti (pvz., CSS, JSON, XML)

Kaip pa­tik­rin­ti gzip su­spau­di­mą

Su­kon­fi­gū­ra­vę „gzip“ su­spau­di­mą savo sve­tai­nė­je, galite pa­si­nau­do­ti įvairiais įrankiais, kad pa­tik­rin­tu­mė­te, ar jis veikia tinkamai ir ar jūsų ži­nia­tink­lio serveris pateikia suspaustą turinį, at­sa­ky­da­mas į klientų užklausas. Vienas iš la­biau­siai re­ko­men­duo­ja­mų įrankių šiam tikslui yra „Google PageSpeed Insights“. Tiesiog įveskite bet kurį savo svetainės puslapį, ir įrankis au­to­ma­tiš­kai iš­a­na­li­zuos jo turinį bei pateiks ataskaitą apie puslapio veikimo pri­va­lu­mus ir trūkumus. Tarp rezultatų rasite in­for­ma­ci­ją apie tai, ar įjungta „gzip“ su­spau­di­mo funkcija.

Be to, galite atlikti greitą „gzip“ testą naudodami HTTP su­spau­di­mo testą sve­tai­nė­je WhatsMyIP.org.

Go to Main Menu