L'incremento della potenza dell'hardware, la sempre maggior disponibilità di banda, e in generale i progressi eccezionali fatti dall'infrastruttura del web negli ultimi anni possono portare designer e sviluppatori a trascurare per eccesso di ottimismo aspetti fondamentali della realizzazione di un sito web fra i quali c'è senz'altro l'ottimizzazione in termini di banda utilizzata.
Non dobbiamo dimenticarci che il nostro primo obiettivo, come web designers, è garantire un'esperienza ottimale all'utente e sicuramente realizzare un sito veloce è essenziale affinché gli utenti lo trovino gradevole. Per raggiungere l'obiettivo della velocità — percepita dall'utente — abbiamo a disposizione parecchie tecniche, alcune relative alla preparazione dei contenuti, altre all'infrastruttura server e di rete, altre ancora riguardanti il codice php e il database MySQL. Oggi in particolare parliamo di una tecnica relativa alla configurazione del web server Apache2 che ci consente di comprimere i dati prima di inviarli al client, se questo supporta la necessaria tecnologia di decompressione. L'argomento è affrontato in maniera simpatica e chiara in questo video di Google Developers.
Vediamo ora in sintesi i principali fattori a favore dell'utilizzo della compressione delle pagine:
Il rovescio della medaglia è un maggior carico di lavoro per il processore del server, ma raramente questo payoff è eccessivo a fronte dei benefici conseguiti; solo in caso di server decisamente obsoleti può essere sconsigliabile l'attivazione della compressione ma si tratta (speriamo) di casi limite e non li considereremo. Alla luce di queste considerazioni, noi utilizziamo la compressione dei dati su tutti i siti web che realizziamo. Il valore aggiunto di un'azienda come Videoarts è la completa trasversalità delle competenze e quindi, essendo sia programmatori che sistemisti, abbiamo sotto controllo tanto l'ottimizzazione del codice quanto l'adozione delle best practices necessarie nella configurazione dei server.
Ma come funziona in pratica la compressione dei dati su Apache2? Innanzitutto, supponendo che abbiate accesso al vostro server web come amministratori, è necessario abilitare il modulo deflate di Apache2, cosa che si può facilmente ottenere con il comando:
a2enmod deflate && /etc/init.d/apache2 restart
Dopodiché è sufficiente aggiungere un blocco di configurazione simile a questo al file .htaccess situato nella directory radice del nostro sito:
AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Questa configurazione, abbastanza basilare, attiverà la compressione dei dati sull'intero sito per le tipologie di file indicate; è sconsigliato comprimere formati già compressi in quanto questo non comporterebbe sostanziali benefici a fronte di un ulteriore lavoro per il server. Se volete saperne di più sulla configurazione del modulo deflate, trovate la documentazione nella relativa sezione della documentazione di Apache2.
Se non sapete se il vostro sito utilizza la compressione dei dati oppure no, potete utilizzare un tool come questo per scoprirlo: http://www.gidnetwork.com/tools/gzip-test.php e se per caso non è attiva fate una bella ramanzina al vostro webmaster! Vi sta facendo perdere tempo e soldi.