Kas yra „gzip“ ir kaip naudojama ši priemonė?
Duomenų suspaudimo programa „gzip“ yra suderinama su įvairiomis platformomis ir plačiai naudojama žiniatinklio kūrimo srityje bei žiniatinklio projektuose kaip pagrindinis suspaudimo sprendimas. Ją galima lengvai įjungti ir valdyti naudojant komandinės eilutės įrankį, o tai padeda sutaupyti saugojimo vietos ir pagerinti sistemos našumą.
Kaip veikia gzip?
Gzip — sutrumpinimas nuo „GNU zip“ — remiasi laisvai prieinamu „Deflate“ algoritmu, kuris derina LZ77 (Lempel-Ziv 77) suspaudimo metodą su Huffmano kodavimu. Naudodama šias technologijas, gzip programa ieško pasikartojančių duomenų sekų. Jei programa aptinka tokias pasikartojančias sekas, ji jas pakeičia nuoroda į pirmą kartą pasirodžiusią seką. Šių sekų ilgis paprastai ribojamas iki 32 000 baitų. Jei simbolių eilutė nepasikartoja ankstesniuose 32 000 baitų, ji saugoma (nesuspaudžiama) gzip faile, kurio plėtinys yra .gz.
Ši procedūra taikoma tik atskiriems failams, todėl norint sukurti vadinamuosius „tarball“ archyvus su plėtiniais .tar.gz arba .tgz, reikia naudoti archyvavimo programą „tar“. Pagal numatytuosius nustatymus originalus failas ištrinamas po gzip paudimo (kai programa taikoma tiesiogiai failui). Tačiau šį automatinį veikimą galima išjungti naudojant papildomą -k parametrą. Norint išpakuoti suspaustus failus, galima naudoti arba gunzip programėlę, arba atitinkamą gzip komandą.
„gzip“ sintaksės ir komandų apžvalga
Nors įvairioms platformoms 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 pradedantiesiems, nes gzip yra klasikinė komandinės eilutės priemonė, pritaikyta būtent tokiam naudojimui. Bendroji sintaksė atrodo taip:
gzip option file(s)bashNustatyti parametrus nebūtina. Jei laukelis paliekamas tuščias, gzip naudoja numatytuosius nustatymus. Pavyzdžiui, norint sukurti suspaustą teksto failo example.txt versiją, pakanka šios paprastos komandos:
gzip example.txtbashJei norite išpakuoti failus vėliau arba nurodyti nustatymus, susijusius su suspaudimo lygiu, saugojimo vieta ar originalaus failo tvarkymu, komandoms reikės atitinkamų parametrų. Toliau pateiktoje lentelėje pateikta gzip svarbiausių komandų apžvalga:
| Pasirinkimas | Aprašymas |
|---|---|
-1 … -9
|
Nustato suspaudimo lygį (1–9), kur 1 užtikrina greičiausią ir mažiausiai suspaustą rezultatą, o 9 siūlo geriausią, bet lėčiausią suspaudimą; numatytasis lygis yra 5
|
-r
|
Rekursyviai nuskaito katalogą (įskaitant visus pakatalogius) ir suspaudžia arba išpakuoja visus jame esančius failus |
-f
|
Priverčia naudoti gzip suspaudimą ir, jei reikia, perrašo esamus failus su tuo pačiu pavadinimu |
-d
|
Išpakuoja pasirinktą failą į dabartinį katalogą |
-k
|
Neleidžia ištrinti originalaus failo |
-l
|
Rodo informaciją, pvz., suspausto failo suspaudimo koeficientą |
-c
|
Išveda suspaustą failą į standartinę išvestį (paprastai į ekraną, prijungtą prie komandos eilutės) |
-q
|
Slopina visus gzip pranešimus |
-t
|
Patikrina suspaustų failų vientisumą |
-h
|
Išvardija visas galimas parinktis |
„gzip“ suspaudimo taikymo atvejai
Šiandien gzip yra beveik nepriklausomas nuo platformos ir gzip galima išplėsti pagal poreikį, jeigu tik pasirinktas projektas atitinka GPL licencijos reikalavimus. „Linux“ sistemose šis suspaudimo įrankis paprastai yra iš anksto įdiegtas arba lengvai prieinamas per paketų tvarkyklę. Oficialioje „gzip“ svetainėje taip pat siūlomos versijos, skirtos „macOS“ ir „Windows“ sistemoms. Šiose sistemose šią programinę įrangą galite naudoti bet kuriuo metu, kad sutaupytumėte saugojimo vietos.
Kita svarbi taikymo sritis – internetas. Tinklo serveriai, tokie kaip „Apache“, jau daugelį metų palaiko „gzip“ suspaudimą, o šiuolaikinės naršyklės sugeba atpažinti suspaustus failus ir juos išpakuoti atvaizduodamos svetainę. Būtent čia gzip gali visapusiškai pasireikšti, nes, kai ši funkcija įjungta, tinklo serveris automatiškai suspaudžia tiek įkeltą turinį, tiek dinamiškai generuojamus svetainės elementus serveryje. Tai gali žymiai sutrumpinti svetainės įkėlimo laiką ir yra viena iš pagrindinių svetainės optimizavimo priemonių. Tuo tarpu naršyklė atlieka išpakuojimą fone, nesunaudodama papildomo pralaidumo. Šis našumo padidėjimas ypač naudingas mobiliųjų įrenginių naudotojams ir gali netiesiogiai pagerinti jūsų svetainės reitingą paieškos sistemose.
Kaip naudoti „gzip“ suspaudimą savo „Apache“ žiniatinklio projekte
Paprastai žiniatinklio serveriai siūlo „gzip“ suspaudimą kaip modulį, kurį tereikia įjungti. Šiandien daugelis žiniatinklio prieglobos paslaugų teikėjų šią funkciją įjungia pagal numatytuosius nustatymus, nors anksčiau taip nebūdavo visada. Jei nesate tikri, ar jūsų prieglobos paslaugų teikėjas palaiko „gzip“ suspaudimą, galite tiesiogiai susisiekti su juo arba patys atlikti patikrinimą rankiniu būdu.
„Apache“ žiniatinklio serveryje modulio nustatymus galima patikrinti naudojant paprastą phpinfo() išvestį. HTTP_ACCEPT_ENCODING įraše bus nurodyta, koks suspaudimo metodas yra pasirinktas – arba ar suspaudimas iš viso įjungtas. Jei gzip yra prieinamas, turite tris skirtingas galimybes, kaip šį suspaudimo įrankį pritaikyti savo poreikiams.
1 variantas: Įjunkite „gzip“ suspaudimą „.htaccess“ faile
Naudodami .htaccess failą, galite nustatyti konkrečiam katalogui skirtus parametrus ir konfigūruoti savo žiniatinklio serverį realiuoju laiku. Tai veikia, nes konfigūracijos failas – paprastai esantis pagrindiniame kataloge– automatiškai nuskaitomas kiekvieno į serverį gaunamo užklausimo metu. Tačiau kai kurių žiniatinklio prieglobos paslaugų teikėjų atveju .htaccess gali būti kitame aplanke, paslėptas arba netgi užblokuotas. Tokiu atveju vienintelė išeitis – susisiekti su prieglobos paslaugų teikėju ir paprašyti suteikti prieigą. Jei galite daryti pakeitimus, galite įjungti gzip suspaudimą naudodami modulį Deflate algoritmui (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>txtBe to, norėdami naudoti mod_gzip ir mod_deflate modulius, turėsite gauti savo interneto prieglobos paslaugų teikėjo leidimą.
2 variantas: Įjunkite „gzip“ suspaudimą per PHP
Gzip suspaudimą 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");
?>php3 variantas: „gzip“ įdiegimas naudojant įskiepį
Be šių dviejų rankinių sprendimų, yra ir variantas, kurio įdiegimas reikalauja tik minimalių pastangų: gzip suspaudimo įjungimas naudojant jūsų turimos turinio valdymo sistemos įskiepį. Tokie naudingi įskiepiai, kuriuos galima įdiegti per kelias minutes ir pritaikyti prie savo poreikių, pirmiausia skirti tokioms PHP pagrįstoms turinio valdymo sistemoms kaip „WordPress“. Toliau pateiktame sąraše nurodyti trys populiariausi įskiepiai, skirti tinklaraščių programinei įrangai:
- „W3 Total Cache“: „WordPress“ įskiepis „W3 Total Cache“ žada pastebimai pagerinti svetainės veikimą. Be įvairių talpyklos mechanizmų ir specialios mobiliesiems įrenginiams skirtos paramos, šis SEO ir patogumo rinkinys taip pat apima parinktis, leidžiančias įjungti „gzip“ suspaudimą.
- WP Rocket: WP Rocket yra dar vienas klasikinis WordPress talpyklos įskiepis. Jis yra lengvai naudojamas ir nuo pat pradžių aktyvuoja visas pagrindines našumo optimizavimo funkcijas, įskaitant gzip suspaudimą.
- WP Performance Score Booster: „WP Performance Score Booster“ įskiepio aktyvių įdiegimų skaičius jau viršijo 10 000. Naudodami šį įskiepį, galite lengvai įjungti „gzip“ ir efektyviai suspausti savo interneto projekto turinį, įskaitant tekstą, HTML, JavaScript, CSS, XML ir kt.
Kaip žingsnis po žingsnio sukonfigūruoti gzip NGINX žiniatinklio serveryje
Jei savo svetainės turinį pateikiate naudodami „NGINX“ žiniatinklio serverį, taip pat galite pasinaudoti „gzip“ suspaudimu, kad sutrumpintumėte projekto įkėlimo laiką. Tam reikia tik sukonfigūruoti ngx_http_gzip_module. Pagal numatytuosius nustatymus gzip direktyva, kuri įjungia arba išjungia suspaudimo paslaugą, yra išjungta.
Norėdami pakeisti šį nustatymą, atidarykite pagrindinį konfigūracijos failą nginx.conf ir suraskite gzip direktyvą. Pakeiskite gzip off į gzip on. Toliau pateiktoje lentelėje paaiškinama kai kurių papildomų direktyvų, naudojamų gzip suspaudimui NGINX konfigūruoti, paskirtis ir galimybės:
| Direktyva | Sintaksė | Numatytasis nustatymas | Aprašymas | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Nustato suspaudimo proceso metu naudojamų buferių skaičių ir dydį |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Nustato suspaudimo lygį; galimos reikšmės: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Nurodo minimalų suspaudžiamo failo ilgį (baitais) | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Nurodo minimalią HTTP versiją, reikalingą suspaustiems atsakymams | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Nustato, kokie turinio tipai turėtų būti suspausti (pvz., CSS, JSON, XML) |
Kaip patikrinti gzip suspaudimą
Sukonfigūravę „gzip“ suspaudimą savo svetainėje, galite pasinaudoti įvairiais įrankiais, kad patikrintumėte, ar jis veikia tinkamai ir ar jūsų žiniatinklio serveris pateikia suspaustą turinį, atsakydamas į klientų užklausas. Vienas iš labiausiai rekomenduojamų įrankių šiam tikslui yra „Google PageSpeed Insights“. Tiesiog įveskite bet kurį savo svetainės puslapį, ir įrankis automatiškai išanalizuos jo turinį bei pateiks ataskaitą apie puslapio veikimo privalumus ir trūkumus. Tarp rezultatų rasite informaciją apie tai, ar įjungta „gzip“ suspaudimo funkcija.
Be to, galite atlikti greitą „gzip“ testą naudodami HTTP suspaudimo testą svetainėje WhatsMyIP.org.