La per­for­man­ce dei siti web dinamici di­mi­nui­sce man mano che gli utenti aumentano e il sito diventa sempre più complesso. Per con­tra­sta­re il calo della velocità ed evitare di so­vrac­ca­ri­ca­re il web server, è possibile uti­liz­za­re un reverse proxy che risponde alle richieste al suo posto, me­mo­riz­zan­do i contenuti richiesti nella cache. Per questo scopo è possibile uti­liz­za­re Varnish, un software di caching con codice open source e, al contrario di altri, svi­lup­pa­to sin dall’inizio come ac­ce­le­ra­to­re web. Per uti­liz­za­re Varnish Cache, è ne­ces­sa­rio in­stal­la­re e con­fi­gu­ra­re un web server con un sistema operativo Unix e avere accesso come utente root.

Come funziona Varnish Cache

Varnish viene attivato di­ret­ta­men­te come reverse proxy a pro­te­zio­ne del web server su cui si trovano i contenuti del sito. Quando viene aperta una pagina, la richiesta viene elaborata dal server cor­ri­spon­den­te, ma è Varnish a me­mo­riz­za­re le richieste e i dati necessari, fun­zio­nan­do come reverse proxy. Nel caso gli stessi dati vengano richiesti nuo­va­men­te, saranno caricati au­to­ma­ti­ca­men­te dalla cache di Varnish. Quindi il software si occupa di salvare i dati nella cache e lascia decidere al sistema operativo cosa deve essere, invece, me­mo­riz­za­to sul disco rigido del server. In questo modo si evita che il sistema salvi i dati sia nella cache che nel disco rigido.

Varnish svolge anche la funzione di load balancing. Si basa sul metodo Round Robin che considera le richieste in entrata del client come thread di lavoro (processi di lavoro) separati, che possono essere trattati uno dopo l’altro da Varnish. Un limite pre­im­po­sta­to sta­bi­li­sce quanti thread attivi possono essere elaborati si­mul­ta­nea­men­te. Una volta raggiunto questo limite, tutte le altre richieste vengono messe in coda. Se si arriva anche al limite delle richieste in coda, le suc­ces­si­ve richieste in entrata vengono bloccate.

La con­fi­gu­ra­zio­ne di Varnish come un reverse proxy viene impostata prin­ci­pal­men­te tramite il Varnish Con­fi­gu­ra­tion Language (VCL). Questo consente di creare degli hook (“ganci”) grazie ai quali si può inserire un codice esterno nell’ap­pli­ca­zio­ne. Se viene caricato uno script VCL, viene con­ver­ti­to nel lin­guag­gio di pro­gram­ma­zio­ne C e compilato nella libreria del programma; i comandi VCL vengono poi collegati a Varnish Cache. Se il CMS in uso, il software e-commerce o l’ap­pli­ca­zio­ne che si utilizza, com­pren­do­no il lin­guag­gio di markup ESI (Edge Side Includes), Varnish può anche ri­pro­dur­re in­te­ra­men­te le pagine me­mo­riz­za­te nella cache. Il lin­guag­gio di markup genera nell’HTML delle pagine i tag ESI, che con­trad­di­stin­guo­no i contenuti dinamici. In caso il client invii una richiesta, Varnish riconosce questi tag e ricarica i contenuti.

Vantaggi e svantaggi di Varnish

Ot­ti­miz­za­re il proprio hosting con Varnish, può essere in molti casi il modo giusto di ri­spon­de­re al numero crescente di vi­si­ta­to­ri e all’aumento dei contenuti del sito. Ma non sempre è con­si­glia­bi­le usarlo. Per aiutarvi nella decisione, abbiamo riassunto di seguito i vantaggi e gli svantaggi di un hosting con Varnish:

VantaggiSvantaggi:
tempi di ca­ri­ca­men­to più veloci grazie ai contenuti salvati nella cache per le soluzioni che non sup­por­ta­no il lin­guag­gio ESI, non si ri­scon­tra­no mi­glio­ra­men­ti notevoli delle pre­sta­zio­ni
Non so­vrac­ca­ri­ca il web server com­ples­si­tà maggiore e più pos­si­bi­li­tà di errori
Supporta l‘ESI non com­pa­ti­bi­le con i pro­to­col­li TLS/SSL e HTTPS
Il sistema operativo salva alcuni contenuti sul disco fisso del server L’in­stal­la­zio­ne e la con­fi­gu­ra­zio­ne non sono facili e ri­chie­do­no delle co­no­scen­ze tecniche
Bi­lan­cia­men­to del carico uti­liz­zan­do il metodo Round Robin solo per sistemi UNIX
Con­fi­gu­ra­zio­ne fles­si­bi­le grazie al VCL

Valutando i vantaggi e gli svantaggi del software, risulta chiaro che un hosting con Varnish è una valida al­ter­na­ti­va alle funzioni di cache dei client e dei web server, nel momento in cui si lavora con un’ap­pli­ca­zio­ne che comprende il lin­guag­gio di markup ESI. Inoltre, l’in­stal­la­zio­ne e la con­fi­gu­ra­zio­ne di Varnish Cache e dei tag ESI ri­chie­do­no tempo e pazienza. Qualora vogliate stabilire una con­nes­sio­ne sicura, è ne­ces­sa­rio un altro server proxy perché i pro­to­col­li TLS/SSL non sono sup­por­ta­ti dal software.

Se con­fi­gu­ra­te Varnish Cache cor­ret­ta­men­te, com­pren­si­vo di tag ESI, il vostro sito sarà più veloce, più di quanto sia possibile con i soliti metodi di caching. I vi­si­ta­to­ri vi­sua­liz­za­no le pagine più ve­lo­ce­men­te e ciò si ri­per­cuo­te­rà po­si­ti­va­men­te sul tasso di con­ver­sio­ne. Inoltre, potete ap­pro­fit­ta­re di un po­si­zio­na­men­to migliore sui motori di ricerca ed evitare di so­vrac­ca­ri­ca­re il web server, che non è più l’unico re­spon­sa­bi­le dell’ela­bo­ra­zio­ne delle richieste in entrata. L’utilizzo di Varnish in un hosting è par­ti­co­lar­men­te indicato per i negozi online o portali con un numero elevato di visite.

In­stal­la­re Varnish Cache

Per in­stal­la­re Varnish Cache, servono i permessi di am­mi­ni­stra­to­re del sistema Unix. Inoltre il web server deve essere pronto, prima di attivare il software. Di seguito vi forniamo una guida per in­stal­la­re e con­fi­gu­ra­re Varnish sul sistema operativo Ubuntu e con web server Apache:

1. In genere Varnish è già compreso nella gestione dei pacchetti di Ubuntu e per questo, durante l’in­stal­la­zio­ne, è possibile accedere alla propria cartella online. Aprite la cartella e integrate come sorgente:

sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list

2. Suc­ces­si­va­men­te ag­gior­na­te i com­po­nen­ti del pacchetto e in­stal­la­te Varnish:

sudo apt-get update
sudo apt-get install varnish

3. Ora bisogna con­fi­gu­ra­re il file di Varnish, in modo che il software sappia dove trovare i contenuti. Quindi aprite il file:

sudo nano /etc/default/varnish

Lì mo­di­fi­ca­te i parametri di “DAEMON_OPTS” come segue:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

4. Salvate le modifiche e aprite il file default.vlc:

sudo nano /etc/varnish/default.vlc

Qui inserite la porta 8080 come sorgente del contenuto elaborato da Varnish:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

5. Infine con­fi­gu­ra­te anche per Apache la porta 8080 (di default 80). Per fare questo dovete aprire il file di con­fi­gu­ra­zio­ne della porta Apache:

sudo nano /etc/apache2/ports.conf

Mo­di­fi­ca­te di con­se­guen­za il numero della porta per le voci “Na­me­Vir­tua­lHo­st” e “Listen”:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Adeguate il file di default (etc/apache2/sites-available/default) allo stesso modo della voce Vir­tua­lHo­st. 

7. Infine riavviate il server e Varnish per com­ple­ta­re la con­fi­gu­ra­zio­ne:

sudo service apache2 restart
sudo service varnish restart

Altre in­for­ma­zio­ni per in­stal­la­re Varnish Cache su altri sistemi Unix e il codice di pro­gram­ma­zio­ne del software sono di­spo­ni­bi­li nella sezione download della pagina ufficiale varnish-cache.org.

Vai al menu prin­ci­pa­le