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:
gzip option file(s)bashNav 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:
gzip example.txtbashLai 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:
| Iespēja | Apraksts |
|---|---|
-1 … -9
|
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
|
-r
|
Rekursīvi pārskata direktoriju (ieskaitot visus apakšdirektorijus) un saspiež vai atspiež visus tajā esošos failus |
-f
|
Piespiež gzip saspiešanu un nepieciešamības gadījumā pārraksta esošos failus ar tādu pašu nosaukumu |
-d
|
Atpakoj izvēlēto failu pašreizējā direktorijā |
-k
|
Neļauj dzēst sākotnējo failu |
-l
|
Parāda informāciju, piemēram, saspiestā faila saspiešanas koeficientu |
-c
|
Izvada saspiesto failu uz standarta izvadi (parasti uz ekrānu, kas savienots ar komandu rindu) |
-q
|
Aiztur visus gzip ziņojumus |
-t
|
Pārbauda saspiestā faila integritāti |
-h
|
Uzskaita visas pieejamās opcijas |
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ē 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:
<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>txtLai 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
ob_start("ob_gzhandler");
?>php3. 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: 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: 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: 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:
| Direktīva | Sintakse | Noklusējuma iestatījums | Apraksts | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Nosaka saspiešanas procesā izmantoto buferu skaitu un izmēru |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Nosaka saspiešanas līmeni; pieļaujamās vērtības: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Nosaka minimālo garumu (baitos) saspiežamajam failam | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Nosaka minimālo HTTP versiju, kas nepieciešama saspiestajām atbildēm | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Nosaka, kādi satura tipi ir jāsaspiež (piem., CSS, JSON, XML) |
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.