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à.
Condividi su Facebook
gennaio 12th, 2010 alle 11:43
Tutto bene e ottima spiegazione. Volevo chederti se attivare la compressione Gzio dal file .htaccess ha delle controindicazioni, anche perché per moti di noi sarebbe poù semplice. Ecco le righe da scrivere in .htaccess :
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
SetOutputFilter DEFLATE
è tutto giusto? Grazie
gennaio 14th, 2010 alle 13:28
Ciao grafica,
puoi inserire le regole nell’.htaccess senza problemi, controindicazioni non ce ne sono. L’importante è che il modulo di apache sia effettivamente installato sul server in cui vai ad usare questo .htaccess