Ottimizzare la banda di Apache

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Il modulo mod_deflate

Nell'installazione Apache di default di Debian è presente l'utile modulo mod_deflate: attivando questo modulo sara’ possibile comprimere i dati trasferiti dal vostro sito al browser web del visitatore, velocizzando cosi’ l’apertura delle pagine web ed utilizzando minor banda di connessione.

Installazione

E' possibile abilitare mod_deflate con questo comando:

# a2enmod deflate

Configurazione

Per ottimizzarne la configurazione, creiamo un file .conf apposito:

# nano /etc/apache2/conf.d/mod_deflate

avente come contenuto:

# Configurazione Mod Deflate
#############################
<IfModule mod_deflate.c>
# Definisco il livello di compresssione
# Valori da 1 (min) a 9 (max)
 DeflateCompressionLevel 3
</IfModule>
<Location />
# Definisco quali pagine vanno compresse
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE image/svg+xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/atom_xml
 AddOutputFilterByType DEFLATE application/x-javascript
 AddOutputFilterByType DEFLATE application/x-httpd-php
 AddOutputFilterByType DEFLATE application/x-httpd-fastphp
 AddOutputFilterByType DEFLATE application/x-httpd-eruby
# Attivo la compressione 
 SetOutputFilter DEFLATE
# Non comprimo il file che hanno una loro compressione
# di default
 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary
# Impedisco errori di compressione nelle vecchie
# versioni dei browser
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Make sure proxies don't deliver the wrong content
 Header append Vary User-Agent env=!dont-vary
# Attivo i log per controllare il corretto
# funzionamento del modulo
 DeflateFilterNote Input input_info
 DeflateFilterNote Output output_info
 DeflateFilterNote Ratio ratio_info
 LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
 CustomLog /var/log/apache2/deflate_log deflate
</Location>

Ora è sufficiente riavviare apache:

# /etc/init.d/apache2 restart

per fargli digerire le modifiche.
Ogni file richiesto dai visitatori verrà registrato all'interno del file di log precedentemente creato. Una tipica riga di log è la seguente:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

da cui possiamo vedere che il visitatore ha richiesto il file info.php e che Apache lo ha inviato con una compressione del 16%.
Poichè questo file di log tenderà a diventare enorme, il mio consiglio è di tenere attiva la registrazione dei log per il solo periodo necessario al debug del modulo. Una volta verificato il corretto funzionamento di Apache sarà possibile disabilitare la registrazione dei log semplicemente commentando le righe relative nel file di configurazione di mod_deflate.

--Ferdybassi 12:20, 6 mar 2011 (CET)