Mikä on gzip ja miten sitä käytetään?
Gzip-tiedostojen pakkausohjelmisto on alustojen välinen ja sitä käytetään laajalti verkkokehityksessä ja verkkoprojekteissa ensisijaisena pakkausratkaisuna. Se on helppo ottaa käyttöön ja käyttää komentoriviltä, ja sen avulla voit säästää tallennustilaa ja parantaa järjestelmän suorituskykyä.
Miten gzip toimii?
Gzip – lyhenne sanoista ”GNU zip” – perustuu vapaasti saatavilla olevaan Deflate-algoritmiin, jossa yhdistyvät LZ77 (Lempel-Ziv 77) -pakkausmenetelmä ja Huffman-koodaus. Näitä tekniikoita käyttämällä gzip-tiedostot etsivät toistuvia merkkijonoja. Jos ohjelma löytää tällaisia toistuvia merkkijonoja, se korvaa ne viittauksella ensimmäisenä esiintyvään merkkijonoon. Näiden sekvenssien pituus on yleensä rajoitettu 32 000 tavuun. Jos merkkijonoa ei esiinny edellisissä 32 000 tavussa, se tallennetaan (pakkaamattomana) gzip-tiedostoon, joka saa .gz-päätteen.
Menettely koskee vain yksittäisiä tiedostoja, minkä vuoksi tar- pakkausohjelmaa tarvitaan niin sanottujen tarball-arkistojen luomiseen, joiden tiedostopääte on .tar.gz tai .tgz. Oletusarvoisesti alkuperäinen tiedosto poistetaan gzip jälkeen (kun gzip suoritetaan suoraan tiedostolle). Voit kuitenkin poistaa tämän automaattisen toiminnon käytöstä käyttämällä valinnaista -k. Pakattujen tiedostojen purkamiseen voit käyttää joko gunzip tai sopivaa gzip.
Yleiskatsaus gzip-syntaksiin ja komentoihin
Vaikka eri alustoille on saatavilla graafisia käyttöliittymiä, gzip käyttö komentoriviltä tai komentokehotteesta on tietysti täysin mahdollista. Jopa aloittelijat pystyvät siihen helposti, sillä gzip on klassinen komentorivityökalu, joka on optimoitu juuri tällaiseen käyttöön. Yleinen syntaksi on seuraavanlainen:
gzip option file(s)bashAsetusten määrittäminen ei ole pakollista. Jos kenttä jätetään tyhjäksi, gzip käyttää oletusasetuksiaan. Esimerkiksi seuraava yksinkertainen komento riittää luomaan pakatun version tekstitiedostosta example.txt:
gzip example.txtbashJos tiedostot halutaan purkaa myöhemmin tai määrittää asetuksia pakkaustasolle, tallennuspaikalle tai alkuperäisen tiedoston käsittelylle, komentoihin on syötettävä tarvittavat tiedot. Seuraavassa taulukossa on yhteenveto gzip tärkeimmästä komennosta:
| Vaihtoehto | Kuvaus |
|---|---|
-1 … -9
|
Asettaa pakkaustason (1–9), jossa 1 tarjoaa nopeimman ja vähiten pakatun tuloksen ja 9 tarjoaa parhaan mutta hitain pakkauksen; oletustaso on 5
|
-r
|
Skannaa hakemiston (mukaan lukien kaikki alihakemistot) rekursiivisesti ja pakkaa tai purkaa kaikki siinä olevat tiedostot |
-f
|
Pakottaa gzip-pakkauksen ja korvaa tarvittaessa olemassa olevat tiedostot, joilla on sama nimi |
-d
|
Puraa valitun tiedoston nykyiseen hakemistoon |
-k
|
Estää alkuperäisen tiedoston poistamisen |
-l
|
Näyttää tietoja, kuten pakatun tiedoston pakkaussuhteen |
-c
|
Lähettää pakatun tiedoston vakiolähtöön (yleensä komentoriville kytkettyyn näyttöön) |
-q
|
Estää kaikki gzip-viestit |
-t
|
Tarkistaa pakatun tiedoston eheyden |
-h
|
Luettelee kaikki käytettävissä olevat vaihtoehdot |
Gzip-pakkauksen käyttötapaukset
Nykyään gzip on lähes alustariippumaton ja sitä voidaan laajentaa tarpeen mukaan, kunhan valittu projekti noudattaa GPL-lisenssiä. Linux-järjestelmissä pakkausohjelma on yleensä esiasennettu tai helposti saatavilla pakettihallinnan kautta. Virallisella gzip-verkkosivustolla on tarjolla myös versiot macOS:lle ja Windowsille. Voit käyttää ohjelmistoa näillä järjestelmillä milloin tahansa tallennustilan säästämiseksi.
Toinen keskeinen sovellusalue on verkko. Apache-kaltaiset verkkopalvelimet ovat tukeneet gzip-pakkausta jo vuosien ajan, ja nykyaikaiset selaimet pystyvät tulkitsemaan pakattuja tiedostoja ja purkamaan ne verkkosivuston lataamisen yhteydessä. Tässä gzip pääsee oikeuksiinsa, sillä kun ominaisuus on käytössä, verkkopalvelin pakkaa automaattisesti sekä ladatun sisällön että palvelimella dynaamisesti luodut verkkosivuston elementit. Tämä voi lyhentää verkkosivuston latausaikoja merkittävästi osana sivuston perusoptimointia. Samaan aikaan selain hoitaa pakkauksen purkamisen taustalla kuluttamatta ylimääräistä kaistanleveyttä. Tämä suorituskyvyn parannus hyödyttää erityisesti mobiilikäyttäjiä, ja se voi epäsuorasti parantaa verkkosivustosi sijoitusta hakukoneissa.
Kuinka käyttää gzip-pakkausta Apache-verkkoprojektissasi
Verkkopalvelimet tarjoavat yleensä gzip-pakkauksen moduulina, joka on vain otettava käyttöön. Nykyään monet web-palveluntarjoajat ottavat tämän ominaisuuden käyttöön oletuksena, kun taas aiemmin näin ei aina ollut. Jos et ole varma, tukeeko palveluntarjoajasi gzip-pakkausta, voit joko ottaa suoraan yhteyttä palveluntarjoajaan tai tarkistaa asian itse manuaalisesti.
Apache-verkkopalvelimella voit tarkistaa moduulin asetukset yksinkertaisen phpinfo() avulla. HTTP_ACCEPT_ENCODING tulos näyttää, mikä pakkausmenetelmä on valittuna – tai onko pakkausta ylipäätään käytössä. Jos gzip on käytettävissä, sinulla on kolme eri vaihtoehtoa tämän pakkausvälineen hyödyntämiseksi tarpeidesi mukaan.
Vaihtoehto 1: Ota gzip-pakkaus käyttöön .htaccess-tiedostossa
.htaccess-tiedoston avulla voit määrittää hakemistokohtaisia asetuksia ja konfiguroida verkkopalvelintasi reaaliajassa. Tämä toimii, koska konfiguraatiotiedosto – joka yleensä sijaitsee juurihakemistossa– luetaan automaattisesti jokaisen palvelimelle saapuvan pyynnön yhteydessä. Joillakin web-palveluntarjoajilla .htaccess saattaa kuitenkin sijaita eri kansiossa, olla piilotettu tai jopa suojattu. Tällöin ainoa vaihtoehto on ottaa yhteyttä palveluntarjoajaan ja pyytää käyttöoikeutta. Jos pystyt tekemään muutoksia, voit ottaa gzip-pakkauksen käyttöön Deflate-algoritmin moduulin (mod_deflate) avulla lisäämällä seuraavan koodin tiedostoon .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>txtTarvitset myös web-palveluntarjoajasi luvan mod_gzip ja mod_deflate moduulien käyttöön.
Vaihtoehto 2: Ota gzip-pakkaus käyttöön PHP:n kautta
Gzip-pakkaus voidaan ottaa käyttöön yksinkertaisella PHP-komennolla. Haittapuolena on, että koodi on lisättävä erikseen jokaiseen PHP-tiedostoon. Siksi tätä vaihtoehtoa kannattaa käyttää vain, jos sinulla ei ole tarvittavia oikeuksia .htaccess muokkaamiseen. Jokaisen tiedoston alkuun lisättävä koodirivi on seuraava:
<?php
ob_start("ob_gzhandler");
?>phpVaihtoehto 3: Ota gzip käyttöön laajennuksen avulla
Näiden kahden manuaalisen ratkaisun lisäksi on olemassa myös vaihtoehto, jonka käyttöönotto vaatii vain vähän vaivaa: gzip-pakkauksen aktivointi käyttämällä käyttämäsi sisällönhallintajärjestelmän laajennusta. Tällaiset hyödylliset laajennukset, jotka voit asentaa muutamassa minuutissa ja mukauttaa tarpeisiisi, on tarkoitettu ensisijaisesti WordPressin kaltaisille, PHP:hen perustuville sisällönhallintajärjestelmille. Seuraavassa luettelossa on kolme suosituinta laajennusta kyseiselle blogiohjelmistolle:
- W3 Total Cache: W3 Total Cache -WordPress-laajennus lupaa huomattavasti parempaa verkkosivuston suorituskykyä. Erilaisten välimuistitoimintojen ja mobiililaitteille suunnatun tuen lisäksi tämä SEO- ja käytettävyyspaketti sisältää myös asetukset gzip-pakkauksen käyttöönottoon.
- WP Rocket: WP Rocket on toinen klassinen WordPress-välimuistilaajennus. Se on helppokäyttöinen ja aktivoi kaikki keskeiset suorituskyvyn optimointitoiminnot – mukaan lukien gzip-pakkauksen – heti alusta alkaen.
- WP Performance Score Booster: WP Performance Score Booster -laajennuksella on jo yli 10 000 aktiivista asennusta. Tämän laajennuksen avulla voit helposti ottaa gzip-pakkauksen käyttöön ja pakata tehokkaasti verkkoprojektisi sisällön, mukaan lukien tekstin, HTML:n, JavaScriptin, CSS:n, XML:n ja paljon muuta.
Kuinka määrittää gzip NGINX-verkkopalvelimella vaihe vaiheelta
Jos toimitat verkkosivustosi sisältöä NGINX-verkkopalvelimen kautta, voit myös hyödyntää gzip-pakkausta projektisi latausajan lyhentämiseksi. Tätä varten sinun tarvitsee vain määrittää ngx_http_gzip_module. Oletusarvoisesti gzip – joka ottaa pakkauspalvelun käyttöön tai poistaa sen käytöstä – on pois päältä.
Voit muuttaa tätä asetusta avaamalla pääasetustiedoston nginx.conf ja etsimällä gzip. Korvaa gzip off arvolla gzip on. Seuraavassa taulukossa selitetään joidenkin NGINX:n gzip-pakkausta määritettäessä käytettävien lisäohjeiden tarkoitus ja vaihtoehdot:
| Ohje | Syntaksi | Oletusasetus | Kuvaus | |
|---|---|---|---|---|
gzip_buffers
|
gzip_buffers number size;
|
gzip_buffers 32 4k \
|
16 8k;
|
Määrittää pakkausprosessin aikana käytettävien puskurien lukumäärän ja koon |
gzip_comp_level
|
gzip_comp_level level;
|
gzip_comp_level 1;
|
Asettaa pakkaustason; kelvolliset arvot: 1–9 | |
gzip_min_length
|
gzip_min_length length;
|
gzip_min_length 20;
|
Määrittää pakattavan tiedoston vähimmäispituuden (tavuina) | |
gzip_http_version
|
gzip_http_version version;
|
gzip_http_version 1.1;
|
Määrittää pakattujen vastausten vaatiman vähimmäis-HTTP-version | |
gzip_types
|
gzip_types content-type;
|
gzip_types text/html;
|
Määrittää, mitkä sisältötyypit tulisi pakata (esim. CSS, JSON, XML) |
Kuinka testata gzip-pakkausta
Kun olet määrittänyt gzip-pakkauksen verkkosivustollesi, voit käyttää erilaisia työkaluja varmistaaksesi, että se toimii oikein ja että verkkopalvelimesi toimittaa pakattua sisältöä vastauksena asiakaspyyntöihin. Yksi suosituimmista työkaluista tähän tarkoitukseen on Google PageSpeed Insights. Syötä vain mikä tahansa sivusi sivu, ja työkalu analysoi sen sisällön automaattisesti ja laatii raportin sivun suorituskyvyn vahvuuksista ja heikkouksista. Tuloksista löydät tiedon siitä , onko gzip-pakkaus käytössä.
Vaihtoehtoisesti voit suorittaa nopean gzip-testin WhatsMyIP.org-sivuston HTTP-pakkaustestillä.