Vai al contenuto
EuroVPSEuroVPS

Varnish Cache spiegato

Se siete alle prime armi con Varnish e volete saperne di più su questo strumento di caching incredibilmente veloce, questo articolo è per voi. Parleremo di cos'è Varnish, di come funziona e di chi può trarne vantaggio.

Di Robert Hughes

Aggiornato il 22 ottobre 20265 min di lettura
Immagine di copertina: Varnish Cache

Varnish è diventato sinonimo di accelerazione HTTP ad alte prestazioni. Varnish Cache è un acceleratore reverse proxy HTTP open source, ottimo per ridurre il carico del web server sulla vostra macchina. Varnish si colloca davanti al web server e agisce come un proxy che fa da ponte tra il browser e il server.

  • figure (alignleft): src /blog/wp-content/uploads/2012/10/varnish-creator.jpg (unchanged, 220x317); alt: Poul-Henning Kamp, il creatore di Varnish; caption: Poul-Henning Kamp (il creatore di Varnish)

Il progetto Varnish è stato un'idea dell'architetto tecnologico danese Poul-Henning Kamp (target _blank, rel noopener). Noto consulente FreeBSD, Kamp è stato lo sviluppatore principale di Varnish.

Il progetto Varnish fu avviato dal ramo online del quotidiano norvegese Verdens Gang. Ma il software ebbe tanto successo da essere infine scorporato in una società separata.

Niente paura però: è ancora software libero e completamente open source, disponibile con licenza BSD a due clausole. Se volete supporto commerciale, è disponibile da Varnish Software.

Attualmente supporto, gestione e sviluppo di Varnish sono curati sotto l'insegna di Varnish Software.

Come funziona Varnish?

Considerate questo scenario. Entrate in una caffetteria affollata e ordinate il caffè filtro della casa. La persona al bancone controlla prima se c'è una caraffa fresca pronta da versare.

Se c'è, ricevete subito la vostra tazza. Se no, l'ordine passa al barista perché prepari una nuova caraffa. Varnish fa il lavoro della persona al bancone.

Varnish sta davanti al vostro web server e la prima volta che un visitatore richiede una pagina, Varnish riceve la richiesta e la passa al server di backend. Il server di backend elabora la richiesta e rimanda la risposta al browser.

Varnish, nel frattempo, «mette in cache» il contenuto renderizzato e lo conserva nella velocissima memoria RAM.

Ogni richiesta successiva per la stessa pagina viene servita direttamente dalla versione in cache (in RAM!) senza disturbare il web server o il database.

Chi usa Varnish?

Molti siti di notizie e di contenuti ad alto traffico usano Varnish.

Varnish offre grandi benefici prestazionali ai siti ricchi di contenuti e ad alto traffico. Varnish può mettere in cache sia contenuti statici che dinamici.

C'è l'idea diffusa, ma sbagliata, che Varnish serva solo per i contenuti statici; con qualche ritocco alla configurazione .VCL funziona brillantemente anche per siti dinamici e applicazioni mobili.

Perché Varnish è così veloce?

Se volete poter servire migliaia di richieste simultanee al secondo senza sovraccaricare il web server, Varnish è uno dei migliori acceleratori HTTP disponibili.

  • image (aligncenter): src /blog/wp-content/uploads/2012/10/varnish-diagram.jpg (unchanged, 600x271); alt: Schema di Varnish davanti al web server

Nella configurazione di Varnish potete impostare se volete che la cache sia conservata su disco o in RAM.

Per avere la sensazione immediata del «clicco ed è lì», vorrete che la cache sia conservata esclusivamente in RAM.

Con una configurazione Varnish ben fatta vedrete tempi di risposta molto più bassi e un enorme calo nell'uso delle risorse del server.

Varnish è difficile da configurare?

RHEL e i suoi derivati pacchettizzano Varnish.

Varnish arriva con una configurazione predefinita di base utilizzabile così com'è per avere l'accelerazione HTTP in funzione con il minimo sforzo. Varnish di per sé non termina HTTPS, quindi su un sito moderno sta dietro a un terminatore TLS come HAProxy o nginx.

Varnish vi fornisce un file Varnish Configuration Language (VCL) (target _blank, rel noopener), nel quale giocate con le impostazioni per metterne a punto le prestazioni. Il file VCL dice a Varnish esattamente come gestire il processo di caching.

Quando e cosa mettere in cache, quando non farlo, e per quanto tempo conservare in memoria i contenuti in cache.

Padroneggiare il .VCL può darvi superpoteri, permettendovi di modificare quasi ogni aspetto di una richiesta e di una risposta HTTP.

Quando dovreste usare Varnish

  1. Se avete un sito ricco di contenuti con picchi di traffico frequenti
  2. Varnish è ottimo per i server con un carico pesante sul database. Mettendo in cache le richieste web più comuni, il vostro server MySQL può riposare un po'.
  3. Se volete ridurre l'attività del disco, allungandone la vita utile.
  4. Se un solo web server e un solo database devono servire migliaia di visitatori simultanei.

Quando non dovreste usare Varnish?

Ci sono molti modi più semplici per ottenere grandi miglioramenti di prestazioni, come il micro caching di NGiNX, da provare prima di ricorrere a Varnish.

Per i siti piccoli, sotto le 1.000 pagine viste al giorno, probabilmente ve la caverete benissimo con uno stack LAMP ottimizzato o con NGiNX con PHP-FPM.

Per la complessità di adattare il file .VCL alle vostre esigenze specifiche, a volte usare Varnish semplicemente non vale lo sforzo. Far andare d'accordo Varnish con i contenuti dinamici è delicato. Certo, potete usare l'«hole punching» con ESI per servire contenuti specifici per utente, ma è davvero necessario?

Controllate prima i frutti a portata di mano

Prima di Varnish, fate le correzioni meno costose: ottimizzazione delle immagini, CSS e JavaScript minificati, tuning di MySQL.

label: Letture correlate

link: Le 10 ragioni principali per cui il vostro sito è lento (e i passi per risolverle) (anchor = h1 of the Italian manuscript when it lands; href unchanged)

Conclusione

Configurare Varnish perché serva i contenuti correttamente e secondo i requisiti della vostra organizzazione può essere delicato. Le regole di scadenza della cache, il time to live, il caching degli URL e i requisiti di object caching in Varnish sono molto complessi. Di conseguenza, molte società di consulenza sono nate dall'esigenza di avere «implementazioni Varnish» fatte nel proprio ambiente.

In EuroVPS gestiamo Varnish davanti a siti ad alto traffico, e i nostri ingegneri possono aiutarvi a progettare il livello di caching per il vostro.

Dall'archivio del blog EuroVPS, pubblicato per la prima volta il 17 ottobre 2012.

Tutte le note dal campo