Varnish Cache: il web accelerator per i siti dinamici
La performance dei siti web dinamici diminuisce man mano che gli utenti aumentano e il sito diventa sempre più complesso. Per contrastare il calo della velocità ed evitare di sovraccaricare il web server, è possibile utilizzare un reverse proxy che risponde alle richieste al suo posto, memorizzando i contenuti richiesti nella cache. Per questo scopo è possibile utilizzare Varnish, un software di caching con codice open source e, al contrario di altri, sviluppato sin dall’inizio come acceleratore web. Per utilizzare Varnish Cache, è necessario installare e configurare un web server con un sistema operativo Unix e avere accesso come utente root.
Come funziona Varnish Cache
Varnish viene attivato direttamente come reverse proxy a protezione del web server su cui si trovano i contenuti del sito. Quando viene aperta una pagina, la richiesta viene elaborata dal server corrispondente, ma è Varnish a memorizzare le richieste e i dati necessari, funzionando come reverse proxy. Nel caso gli stessi dati vengano richiesti nuovamente, saranno caricati automaticamente 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, memorizzato 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 preimpostato stabilisce quanti thread attivi possono essere elaborati simultaneamente. Una volta raggiunto questo limite, tutte le altre richieste vengono messe in coda. Se si arriva anche al limite delle richieste in coda, le successive richieste in entrata vengono bloccate.
La configurazione di Varnish come un reverse proxy viene impostata principalmente tramite il Varnish Configuration Language (VCL). Questo consente di creare degli hook (“ganci”) grazie ai quali si può inserire un codice esterno nell’applicazione. Se viene caricato uno script VCL, viene convertito nel linguaggio di programmazione 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’applicazione che si utilizza, comprendono il linguaggio di markup ESI (Edge Side Includes), Varnish può anche riprodurre interamente le pagine memorizzate nella cache. Il linguaggio di markup genera nell’HTML delle pagine i tag ESI, che contraddistinguono i contenuti dinamici. In caso il client invii una richiesta, Varnish riconosce questi tag e ricarica i contenuti.
Vantaggi e svantaggi di Varnish
Ottimizzare il proprio hosting con Varnish, può essere in molti casi il modo giusto di rispondere al numero crescente di visitatori e all’aumento dei contenuti del sito. Ma non sempre è consigliabile usarlo. Per aiutarvi nella decisione, abbiamo riassunto di seguito i vantaggi e gli svantaggi di un hosting con Varnish:
Vantaggi | Svantaggi: |
---|---|
tempi di caricamento più veloci grazie ai contenuti salvati nella cache | per le soluzioni che non supportano il linguaggio ESI, non si riscontrano miglioramenti notevoli delle prestazioni |
Non sovraccarica il web server | complessità maggiore e più possibilità di errori |
Supporta l‘ESI | non compatibile con i protocolli TLS/SSL e HTTPS |
Il sistema operativo salva alcuni contenuti sul disco fisso del server | L’installazione e la configurazione non sono facili e richiedono delle conoscenze tecniche |
Bilanciamento del carico utilizzando il metodo Round Robin | solo per sistemi UNIX |
Configurazione flessibile grazie al VCL |
Valutando i vantaggi e gli svantaggi del software, risulta chiaro che un hosting con Varnish è una valida alternativa alle funzioni di cache dei client e dei web server, nel momento in cui si lavora con un’applicazione che comprende il linguaggio di markup ESI. Inoltre, l’installazione e la configurazione di Varnish Cache e dei tag ESI richiedono tempo e pazienza. Qualora vogliate stabilire una connessione sicura, è necessario un altro server proxy perché i protocolli TLS/SSL non sono supportati dal software.
Se configurate Varnish Cache correttamente, comprensivo di tag ESI, il vostro sito sarà più veloce, più di quanto sia possibile con i soliti metodi di caching. I visitatori visualizzano le pagine più velocemente e ciò si ripercuoterà positivamente sul tasso di conversione. Inoltre, potete approfittare di un posizionamento migliore sui motori di ricerca ed evitare di sovraccaricare il web server, che non è più l’unico responsabile dell’elaborazione delle richieste in entrata. L’utilizzo di Varnish in un hosting è particolarmente indicato per i negozi online o portali con un numero elevato di visite.
Installare Varnish Cache
Per installare Varnish Cache, servono i permessi di amministratore del sistema Unix. Inoltre il web server deve essere pronto, prima di attivare il software. Di seguito vi forniamo una guida per installare e configurare 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’installazione, è 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. Successivamente aggiornate i componenti del pacchetto e installate Varnish:
sudo apt-get update
sudo apt-get install varnish
3. Ora bisogna configurare il file di Varnish, in modo che il software sappia dove trovare i contenuti. Quindi aprite il file:
sudo nano /etc/default/varnish
Lì modificate 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 configurate anche per Apache la porta 8080 (di default 80). Per fare questo dovete aprire il file di configurazione della porta Apache:
sudo nano /etc/apache2/ports.conf
Modificate di conseguenza il numero della porta per le voci “NameVirtualHost” 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 VirtualHost.
7. Infine riavviate il server e Varnish per completare la configurazione:
sudo service apache2 restart
sudo service varnish restart
Altre informazioni per installare Varnish Cache su altri sistemi Unix e il codice di programmazione del software sono disponibili nella sezione download della pagina ufficiale varnish-cache.org.