Il software di com­pres­sio­ne dei dati gzip può essere uti­liz­za­to su tutte le piat­ta­for­me ed è par­ti­co­lar­men­te ap­prez­za­to come soluzione di com­pres­sio­ne nello sviluppo web e nei progetti web. Il programma può essere fa­cil­men­te attivato e gestito tramite il ri­spet­ti­vo strumento a riga di comando per ri­spar­mia­re spazio di ar­chi­via­zio­ne e mi­glio­ra­re le pre­sta­zio­ni del sistema.

Come funziona gzip?

Il programma gzip, che è la forma ab­bre­via­ta di “GNU zip”, si basa sull’algoritmo Deflate, uti­liz­za­bi­le li­be­ra­men­te e che combina il processo di com­pres­sio­ne dei dati LZ77 (Lempel-Ziv 77) e la codifica di Huffman. Proprio con l’aiuto di queste tecniche gzip scansiona i file in cerca di stringhe di dati doppie. Nel caso in cui il programma incontri de­ter­mi­na­te sequenze ri­cor­ren­ti, queste vengono so­sti­tui­te at­tra­ver­so un archivio sulla prima stringa che compare, dove la lunghezza di una tale sequenza è so­li­ta­men­te limitata a 32.000 byte. Se una sequenza non si presenta nei 32.000 byte pre­ce­den­ti, allora il file verrà salvato senza com­pres­sio­ne in formato gzip, con esten­sio­ne .gz.

Il pro­ce­di­men­to è limitato ai singoli file, perciò è ne­ces­sa­rio anche un programma di com­pres­sio­ne tar al fine di creare i co­sid­det­ti archivi tarball, con esten­sio­ni .tar.gz o .tgz. Di norma il file di output viene eliminato in seguito alla com­pres­sio­ne tramite gzip (con ap­pli­ca­zio­ne diretta su un file). Tuttavia, è possibile di­sat­ti­va­re questa funzione au­to­ma­ti­ca tramite l’im­po­sta­zio­ne di parametri opzionali (-k). Per de­com­pri­me­re pacchetti compressi in pre­ce­den­za, si può fare af­fi­da­men­to sia sul programma gunzip sia sul cor­ri­spet­ti­vo comando di gzip.

gzip: sintassi e comandi generali

Anche quando ci sono delle in­ter­fac­ce grafiche per le diverse piat­ta­for­me, l’utilizzo di gzip tramite il terminale, ovvero la riga di comando, è sempre possibile. Anche per i neofiti questa non dovrebbe rap­pre­sen­ta­re una sfida troppo im­pe­gna­ti­va, poiché gzip è ot­ti­miz­za­to per diverse modalità d’utilizzo, in quanto strumento classico della riga di comando. La sintassi si presenta ge­ne­ral­men­te in questo modo:

gzip opzioni file
bash

L’im­mis­sio­ne di opzioni non è in alcun modo ob­bli­ga­to­ria. Lasciando il campo vuoto, gzip farà ri­fe­ri­men­to alle im­po­sta­zio­ni standard. Dunque basterà il semplice comando seguente per creare una versione compressa del file di testo esempio.txt.

gzip esempio.txt
bash

Suc­ces­si­va­men­te, per de­com­pri­me­re i file o per dare istru­zio­ni spe­ci­fi­che ri­guar­dan­ti il grado di com­pres­sio­ne, il luogo di ar­chi­via­zio­ne o per indicare come com­por­tar­si con il file originale, ai comandi bisogna associare sempre le giuste spe­ci­fi­ca­zio­ni. La seguente tabella fornisce i comandi gzip più im­por­tan­ti:

Opzione De­scri­zio­ne
-1-9 Definisce il grado di com­pres­sio­ne (1-9), dove il valore 1 cor­ri­spon­de al tipo di com­pres­sio­ne più basso e veloce, mentre il valore 9 equivale a quello migliore ma che richiede un maggior tempo; il valore standard pre­im­po­sta­to è 5
-r Ricerca ri­cor­si­va­men­te la cartella (incluse tutte le sot­to­car­tel­le) e comprime o de­com­pri­me tutti i file contenuti al suo interno
-f Forza la com­pres­sio­ne gzip e so­vra­scri­ve, in caso sia ne­ces­sa­rio, i file già presenti con lo stesso nome
-d De­com­pri­me i file se­le­zio­na­ti nella cartella attuale
-k Impedisce la can­cel­la­zio­ne del file originale
-l Mostra le in­for­ma­zio­ni dei file, come ad esempio il grado di com­pres­sio­ne
-c Crea un file compresso per uno standard output, di solito lo schermo di un PC, connesso alla riga di comando
-q Disattiva com­ple­ta­men­te le co­mu­ni­ca­zio­ni da parte del programma gzip
-t Testa l’integrità del file compresso
-h Elenca tutte le opzioni di­spo­ni­bi­li

Casi di utilizzo per la com­pres­sio­ne gzip

Il programma gzip è oggi uti­liz­za­bi­le su quasi ogni piat­ta­for­ma e am­plia­bi­le a piacere, fin quando la licenza GPL scelta per il progetto venga ri­spet­ta­ta. Sui sistemi Linux questo strumento per la com­pres­sio­ne dei dati è so­li­ta­men­te in­stal­la­to au­to­ma­ti­ca­men­te o è contenuto nel sistema di gestione dei pacchetti, pronto per essere in­stal­la­to.

Sul sito ufficiale di gzip ci sono anche versioni per macOS e Windows. Per ri­spar­mia­re spazio, puoi uti­liz­za­re il software in qualsiasi momento su questi sistemi.

Un altro campo di utilizzo è il web: da anni i server web come Apache dominano e i browser moderni sono in grado di in­ter­pre­ta­re i file compressi e di de­com­pri­mer­li durante il rendering dei siti web. Qui gzip dà il meglio di sé: una volta attivato il processo, il server web inizia au­to­ma­ti­ca­men­te la com­pres­sio­ne degli elementi caricati nello spazio web e degli elementi dinamici del sito web. In questo modo il tempo di ca­ri­ca­men­to del sito web sarà con­si­de­re­vol­men­te inferiore nell’ottica di un’ot­ti­miz­za­zio­ne di base del sito.

La de­com­pres­sio­ne da parte del browser fa sì che la banda larga ne­ces­sa­ria per il ca­ri­ca­men­to di una o più pagine sia limitata. Spe­cial­men­te gli utenti da di­spo­si­ti­vi mobili be­ne­fi­cia­no di questo mi­glio­ra­men­to delle pre­sta­zio­ni, che va a influire po­si­ti­va­men­te anche sul ranking dei motori di ricerca.

Come attivare la com­pres­sio­ne gzip su Apache

I server web offrono ge­ne­ral­men­te un pro­ce­di­men­to di com­pres­sio­ne gzip sotto forma di un modulo che deve essere sem­pli­ce­men­te attivato. Og­gi­gior­no, a dif­fe­ren­za di com’era in passato, molti provider offrono questa funzione gra­tui­ta­men­te. Se non sei certo se il tuo provider offra o meno la com­pres­sio­ne con gzip, puoi con­tat­tar­lo di­ret­ta­men­te o in al­ter­na­ti­va eseguire un’in­ter­ro­ga­zio­ne manuale.

Nel caso in cui si tratti di un server web Apache, verifica le im­po­sta­zio­ni del modulo tramite la funzione phpinfo(). Ag­giun­gen­do la voce HTTP_ACCEPT_ENCODING scoprirai se e quali metodi di com­pres­sio­ne hai a di­spo­si­zio­ne.

Nel caso in cui gzip sia di­spo­ni­bi­le, hai tre diverse opzioni per uti­liz­za­re il software di com­pres­sio­ne per i tuoi fini.

Opzione 1: attivare la com­pres­sio­ne gzip dal file .htaccess

Tramite il file .htaccess puoi uti­liz­za­re delle im­po­sta­zio­ni spe­ci­fi­che per le cartelle e con­fi­gu­ra­re così il tuo server web in tempo reale. In questo modo il file di con­fi­gu­ra­zio­ne, che so­li­ta­men­te va cercato all’interno della root, verrà letto au­to­ma­ti­ca­men­te ogni­qual­vol­ta una richiesta raggiunga il server. Il file .htaccess è in alcuni casi presente in un’altra cartella, nascosto o ne viene ad­di­rit­tu­ra impedito l’accesso. In tal caso l’unica opzione possibile è quella di con­tat­ta­re il provider e ri­chie­de­re l’accesso. Una volta ottenuto, attiva la com­pres­sio­ne gzip tramite il modulo per l’algoritmo deflate (mod_deflate) e inserisci il seguente codice nel file:

<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
Consiglio

Anche per i moduli mod_gzip e mod_deflate hai bisogno dell’abi­li­ta­zio­ne da parte del tuo provider.

Opzione 2: attivare la com­pres­sio­ne gzip tramite PHP

È possibile attivare il processo di com­pres­sio­ne gzip grazie a un semplice comando PHP. Lo svan­tag­gio risiede però nel fatto che il codice va inserito sin­go­lar­men­te in ogni documento PHP. Ti conviene procedere in questo modo solo se non disponi dell’accesso ne­ces­sa­rio per potere elaborare il file .htaccess. La riga di codice che dovrai inserire all’inizio del file in questione è la seguente:

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

Opzione 3: im­ple­men­ta­re gzip tramite plugin

Oltre alle due soluzioni manuali proposte, vi è una variante che richiede invece un dispendio di energie minimo da un punto di vista delle im­po­sta­zio­ni, ovvero l’at­ti­va­zio­ne della com­pres­sio­ne gzip at­tra­ver­so un plugin per il CMS da te uti­liz­za­to. Puoi trovare queste utili espan­sio­ni, in­te­gra­bi­li in pochi minuti e adat­ta­bi­li secondo le tue esigenze, so­prat­tut­to per i CMS come WordPress, basati sul lin­guag­gio di scripting PHP. Il seguente elenco contiene tre dei plugin più amati per questo software per i blog:

  • W3 Total Cache: il plugin per WordPress W3 Total Cache offre un mi­glio­ra­men­to notevole delle pre­sta­zio­ni del tuo sito web. Oltre a diversi mec­ca­ni­smi di caching e a un supporto specifico per di­spo­si­ti­vi mobili, questa suite per la SEO e per l’usabilità fornisce anche opzioni per attivare la com­pres­sio­ne gzip.
  • WP Rocket: WP Rocket è anche un classico plugin di caching per WordPress. L’esten­sio­ne è facile da usare e attiva fin dall’inizio tutte le funzioni im­por­tan­ti per l’ot­ti­miz­za­zio­ne della velocità, compresa la com­pres­sio­ne gzip.
  • WP Per­for­man­ce Score Booster: l’esten­sio­ne WP Per­for­man­ce Score Booster può già contare su oltre 10.000 in­stal­la­zio­ni attive. Con l’aiuto di questo plugin attivi gzip senza grosse dif­fi­col­tà e riuscirai a com­pri­me­re ef­fi­ca­ce­men­te i contenuti del tuo progetto web come testi, HTML, Ja­va­Script, CSS, XML e simili.

Con­fi­gu­ra­re gzip sul tuo server web NGINX: istru­zio­ni

Se utilizzi un server web NGINX per mettere online dei contenuti sul tuo sito web, hai la pos­si­bi­li­tà di uti­liz­za­re gzip per ridurre i tempi di ca­ri­ca­men­to del tuo progetto. A questo scopo devi solo con­fi­gu­ra­re cor­ret­ta­men­te il modulo ngx_http_gzip_module. Di regola la direttiva gzip, tramite la quale attivi e disattivi il servizio di com­pres­sio­ne, è di­sa­bi­li­ta­ta.

Per mo­di­fi­ca­re questa im­po­sta­zio­ne, apri il file di con­fi­gu­ra­zio­ne prin­ci­pa­le nginx.conf, cerca la direttiva gzip e so­sti­tui­sci suc­ces­si­va­men­te gzip off in gzip on. Grazie alla seguente tabella puoi ap­pren­de­re il si­gni­fi­ca­to e le pos­si­bi­li­tà di alcune ulteriori direttive per la con­fi­gu­ra­zio­ne della com­pres­sio­ne gzip sui server NGINX.

Direttiva Sintassi Im­po­sta­zio­ne standard De­scri­zio­ne
gzip_buffers gzip_buffers Dimensione desiderata; `gzip_buffers 32 4k 16 8k;`
gzip_comp_level gzip_comp_level Grado di compressione; gzip_comp_level 1; Determina il grado di com­pres­sio­ne; valori se­le­zio­na­bi­li: 1-9
gzip_min_length gzip_min_length Lunghezza minima; gzip_min_length 20; Determina la lunghezza minima in byte del file compresso
gzip_http_version gzip_http_version Numero della versione; gzip_http_version 1.1; Determina con quale versione HTTP viene risposta una richiesta compressa
gzip_types gzip_types Tipo di contenuto; gzip_types text/html; Regola per quale tipo di contenuto deve valere la com­pres­sio­ne; tipi se­le­zio­na­bi­li: CSS, JSON, XML, ecc.

Come testare la com­pres­sio­ne gzip

Una volta con­fi­gu­ra­ta la com­pres­sio­ne gzip per la tua pagina web, puoi uti­liz­za­re diversi strumenti online per as­si­cu­rar­ti che il pro­ce­di­men­to funzioni come de­si­de­ra­to e che il tuo server web metta a di­spo­si­zio­ne i contenuti compressi quando richiesti. Il primo strumento rac­co­man­da­bi­le per questo è PageSpeed Insights di Google. Una volta indicata la pagina de­si­de­ra­ta, lo strumento analizza au­to­ma­ti­ca­men­te il contenuto e ti informa suc­ces­si­va­men­te su tutti i punti di forza e sulle debolezze della pagina in questione. Scoprirai tra l’altro anche se la com­pres­sio­ne gzip è attiva o meno. In al­ter­na­ti­va, puoi condurre un semplice test relativo a gzip con l’HTTP Com­pres­sion Test su WhatsMyIP.org.

Vai al menu prin­ci­pa­le