Ottimizzare la performance di Apache e la velocità di caricamento delle pagine di un sito web è facile e veloce grazie alla compressione dei file.

Perché attivare la compressione

Al giorno d’oggi le pagine servite dai siti web sono sempre più pesanti, per non parlare del carico di elementi esterni che si portano dietro tra css, javascript, immagini e compagnia bella. Attivando la compressione gzip è possibile ridurre notevolmente la dimensione degli elementi inviati da Apache al browser, così da ottimizzare i tempi di caricamento della pagina per utente e server.

Mod_deflate

Il modulo deflate di Apache non è l’unico modo per abilitare la compressione degli elementi. E’ sicuramente il modo più facile, immediato e non crea problemi di sorta per cui è quello che ho usato e che andrò a descrivere.

Se attivato, il mod_deflate viene inserito tra i filtri (gli output filters) utilizzati da Apache nel rendere disponibili i contenuti. Sono diverse le opzioni di configurazione disponibili per questo modulo, come ad esempio le restrizioni su quali tipi di file devono essere compressi o il livello di compressione da utilizzare.

Attivare il mod_deflate su Debian/Ubuntu

Il modulo è già presente nell’installazione di Apache e deve essere attivato. Dopo aver verificato che il modulo è effettivamente presente nella directory “mods-available” di Apache (solitamente /etc/apache2/mods-available/), creiamo due link simbolici nella cartella “mods-enabled” per attivare il mod_deflate e la rispettiva configurazione:
ln -s /etc/apache2/mods-available/deflate.load /etc/apache2/mods-enabled/deflate.load
ln -s /etc/apache2/mods-available/deflate.conf /etc/apache2/mods-enabled/deflate.conf

Ricarichiamo poi la configurazione di Apache:

/etc/init.d/Apache2 reload

Attivare il mod_deflate su CentOS/Fedora/RedHat

Per attivare il modulo è necessario decommentare la seguente riga nel file di configurazione di Apache (solitamente /etc/httpd/conf/httpd.conf). All’interno di questo file decommentare la seguente riga:

LoadModule deflate_module modules/mod_deflate.so

Creiamo il file di configurazione (maggiori dettagli più sotto):

nano /etc/httpd/conf.d/deflate.conf

Ricarichiamo poi la configurazione di Apache:

service httpd reload

La configurazione del modulo

Sia per Debian che su CentOs ho parlato di un file deflate.conf. E’ il file da creare/modificare per specificare le opzioni di compressione del modulo deflate.

Ecco il mio file deflate.conf:

# Insert filter
SetOutputFilter DEFLATE
# Escludiamo i browser problematici
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
# Non comprimere le immagini
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
# Non comprimere i file compressi
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary

Come potete vedere, al modulo viene detto di comprimere tutti i files richiesti dal client, con alcune esclusioni:

  • Il metodo non verrà utilizzato con i browser che hanno alcuni problemi con il supporto della compressione gzip
  • Non verranno compresse le immagini: supponendo che siano già ottimizzate per il web sarebbe uno spreco di CPU andare a ricomprimerle
  • Non verranno compressi i file già compressi (es. rar, zip) per ovvi motivi.

Verificare che la compressione funzioni

Utilizzando questo tool online potete inserire l’indirizzo web per il quale volete verificare se la compressione gzip è effettivamente attiva. Il sito permette inoltre di controllare se il vostro browser supporta questa modalità.