realizzazione
siti web a Bologna

dal 2002
16 anni di siti web

realizzare siti web veloci con la compressione dei dati

10/03/2013

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.

pro e contro

Vediamo ora in sintesi i principali fattori a favore dell'utilizzo della compressione delle pagine:

  • minore impiego di banda lato server — anche se il costo della banda è calato negli ultimi anni, rimane pur sempre una risorsa costosa e quindi da non sprecare
  • minore impiego di banda lato client — la sempre maggior disponibilità di banda per i nostri server non deve indurci a credere che la situazione degli utenti sia altrettanto rosea, anzi; non è infrequente che i visitatori accedano ai nostri siti con tecnologie a dir poco obsolete
  • maggiore velocità percepita del sito — è un dato indiscusso il fatto che la velocità è uno dei primi fattori che gli utenti valutano per stabilire la qualità dei siti web; comprimere i dati trasmessi al client ci consente di recuperare frazioni di secondo preziose che altrimenti andrebbero sprecate
  • maggior valore del sito per i motori di ricerca — la velocità può influenzare anche il posizionamento dei siti web sui motori di ricerca; anche se la questione non è pacifica, è frequente che in caso di siti veloci si notino dei miglioramenti anche significativi
  • maggior facilità di accesso da periferiche mobili — se l'avvento della fibra ottica e delle connessioni ADSL ha reso la navigazione più fluida, la connettività mobile ancora risente di alcune limitazioni dovute alla qualità e alla disponibilità del segnale; trasmettere meno dati consente quindi di raggiungere e soddisfare un pubblico più vasto che comprende anche gli utenti di dispositivi mobili

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.

attivare la compressione in pratica su Apache2 e GNU/Linux Debian stable

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.