Varnish Cache

Varnish: cos’è e a cosa serve

Varnish è un reverse proxy progettato per velocizzare i siti web. Funziona come intermediario tra il server del sito e il browser dell’utente. Quando qualcuno apre una pagina, la richiesta non va subito al server: passa prima da Varnish.

Se Varnish ha già una copia della pagina salvata nella sua cache, la invia direttamente al browser. Questo evita di coinvolgere il server ogni volta, riducendo i tempi di caricamento e il carico sul sistema.

Varnish viene definito anche web accelerator proprio per questo motivo: migliora le prestazioni del sito web e aiuta a gestire meglio il traffico, anche in presenza di molti visitatori o pagine complesse.

Varnish Cache

Come funziona

Quando una pagina viene richiesta, Varnish verifica se ha già una versione salvata nella sua cache. Se sì, la consegna subito. Se no, inoltra la richiesta al server, riceve la risposta, la invia al visitatore e contemporaneamente la memorizza nella cache.

La volta successiva, se viene chiesta di nuovo quella pagina, sarà Varnish a inviarla direttamente, senza far lavorare il server.

Questo sistema è particolarmente utile per i contenuti che non cambiano spesso, come articoli, pagine informative, immagini, ecc. Si riduce il carico del server e si ottimizzano i tempi di risposta.

Personalizzazione e gestione

La configurazione di Varnish si fa tramite un linguaggio chiamato VCL (Varnish Configuration Language). Con questo si può decidere:

  • quali pagine salvare in cache
  • per quanto tempo mantenerle
  • quali escludere (es. login o pannello admin)

Varnish supporta anche ESI (Edge Side Includes), un linguaggio che permette di mescolare contenuti statici e dinamici nella stessa pagina, mantenendo la cache attiva dove possibile.

Ha inoltre funzioni di load balancing, cioè può distribuire il traffico su più server, utile in caso di picchi o progetti ad alto traffico.

Esistono anche i VMOD, moduli aggiuntivi creati dagli utenti, che ampliano le funzioni base del sistema.

Dove e come si installa

Varnish è open source e funziona solo su sistemi Unix/Linux. Non è compatibile con ambienti di hosting condiviso classico, a meno che il servizio non sia già configurato per supportarlo. È adatto a VPS e server dedicati, dove si ha accesso root.

L’installazione si esegue da terminale, seguendo le istruzioni ufficiali presenti sul sito di Varnish. Dopo l’installazione, si passa alla configurazione, anch’essa da riga di comando: si possono escludere alcune pagine dalla cache, impostare la durata dei contenuti salvati, e molto altro.

Per WordPress, sul sito ufficiale di Varnish è disponibile anche una guida dedicata.

Integrazione con WordPress: Proxy Cache Purge

Varnish Cache

Proxy Cache Purge è un plugin per WordPress pensato per chi utilizza un reverse proxy come Varnish o Nginx per la gestione della cache. Il suo compito è molto specifico: ogni volta che viene modificato un contenuto sul sito, come un articolo, una pagina, un commento o un elemento personalizzato, il plugin invia al proxy una richiesta per svuotare la cache relativa a quella risorsa. Non interviene sulla cache interna di WordPress né crea copie statiche delle pagine: semplicemente comunica al sistema che gestisce la cache esterna che qualcosa è cambiato e che quella pagina deve essere rigenerata. Questo evita che i visitatori vedano versioni obsolete dei contenuti, garantendo una navigazione coerente con lo stato reale del sito.

Il comportamento del plugin è abbastanza intelligente. Non si limita a invalidare la pagina modificata, ma estende il purge anche alla homepage, alle pagine di archivio come le categorie o i tag, ai feed RSS e alle API REST. Quando viene cambiato il tema del sito, svuota l’intera cache in automatico, senza richiedere azioni da parte dell’utente. È disponibile anche un pulsante nel pannello di amministrazione per eseguire manualmente lo svuotamento completo della cache, utile ad esempio in caso di modifiche ai file effettuate via FTP o tramite plugin che non passano per le funzioni standard di WordPress.

Il plugin offre anche una modalità sviluppo, chiamata DevMode, che permette di sospendere temporaneamente la gestione della cache per 24 ore. Questa funzione può essere attivata dal backend oppure inserendo una costante nel file wp-config.php. Durante la modalità sviluppo, il sito non interagisce con Varnish per la cache, permettendo di testare modifiche in tempo reale senza interferenze. Chi lavora con WP‑CLI può inoltre usare comandi da terminale per svuotare la cache della homepage, di una pagina specifica o di un’intera sezione, per attivare o disattivare la DevMode, e anche per eseguire controlli sugli header delle pagine e verificare se vengono servite da cache o meno.

In ambienti dove il proxy non si trova sullo stesso server, ad esempio dietro a un sistema come Cloudflare o Sucuri, è possibile configurare manualmente l’indirizzo IP del proxy inserendo un’apposita riga nel wp-config.php. Questo permette di mantenere la comunicazione tra WordPress e Varnish anche quando i due non sono direttamente collegati. In alternativa, se il proxy è in locale (es. Nginx configurato come reverse proxy sulla stessa macchina), non è necessaria alcuna configurazione aggiuntiva.

Il plugin è progettato per funzionare in modo selettivo: quando possibile, svuota solo le URL coinvolte. Tuttavia, se le modifiche impattano più di 50 URL in una singola operazione, per motivi di efficienza esegue automaticamente un purge completo. Inoltre, non può rilevare modifiche effettuate fuori da WordPress, come file sostituiti manualmente: in quei casi bisogna agire manualmente con il pulsante “Empty Cache”.