Team al lavoro su un progetto e-commerce WooCommerce Magento

Varnish vs Redis: differenze e perché la cache conta (anche su Magento 2)

· 4 min lettura · di

“Abbiamo un hosting potente ma il sito è lento lo stesso”: è una delle richieste che sento più spesso da chi gestisce un e-commerce Magento 2 con un catalogo grande. Quasi sempre il problema non è l’hardware, ma la cache — o meglio, la cache sbagliata, o usata a metà. Vediamo la differenza tra Varnish e Redis, a cosa servono davvero e perché su un sito, soprattutto e-commerce, non sono un dettaglio tecnico ma una scelta che si sente sulle vendite.

Perché la cache è importante per un sito

Ogni volta che un visitatore apre una pagina, il server deve interrogare il database, eseguire il codice PHP, comporre l’HTML e rispedirlo indietro. Per un sito con poco traffico è un lavoro che si fa in fretta. Ma su un e-commerce con migliaia di prodotti, categorie con filtri, prezzi che cambiano, utenti loggati e carrelli attivi, quel lavoro si ripete per ogni singola visita — e sotto carico (tanti utenti insieme, una campagna pubblicitaria che porta traffico, il Black Friday) il server rallenta o va in crisi. La cache salva il risultato già pronto di quel lavoro e lo riserve senza rifarlo da capo: pagine più veloci, meno carico sul server, meno probabilità che il sito vada giù proprio quando c’è più gente a comprare.

Cos’è Varnish

Varnish è un HTTP cache / reverse proxy: si mette davanti al server web e intercetta le richieste prima ancora che arrivino a PHP. Se una pagina è già in cache, Varnish la restituisce direttamente dalla memoria, in millisecondi, senza che Magento o WordPress vengano nemmeno interpellati. È il motivo per cui su Magento 2 l’attivazione del Full Page Cache con Varnish fa spesso la differenza più grande e più immediata su tempi di caricamento: cache delle pagine intere, altissime prestazioni, ma un controllo più “grezzo” — va configurato bene per non servire a un cliente loggato la pagina cache di un altro, o un prezzo/carrello non suo.

Cos’è Redis

Redis è un database in memoria, molto più versatile: su Magento 2 (e su tante altre applicazioni PHP) si usa tipicamente per tre cose diverse — la cache degli oggetti dell’applicazione (configurazioni, layout, risultati di query ricorrenti), le sessioni utente (chi è loggato, cosa ha nel carrello) e, in alcuni casi, come coda per lavori in background. A differenza di Varnish non mette in cache pagine HTML intere, ma pezzi di dati che l’applicazione usa continuamente: è più lento di Varnish su una richiesta cache singola, ma molto più intelligente su cosa può essere condiviso e cosa deve restare specifico per utente.

Varnish vs Redis: la differenza che conta

VarnishRedis
Cosa mette in cachePagine HTML intereDati, sessioni, oggetti applicativi
Dove si piazzaDavanti al server web (reverse proxy)Dietro, usato dall’applicazione stessa
VelocitàMassima (bypassa PHP del tutto)Molto veloce, ma passa comunque da PHP
Adatto aPagine pubbliche, uguali per tutti i visitatoriContenuto personalizzato, carrello, sessioni
Su Magento 2Full Page CacheCache backend + sessioni

Non sono alternative: sono complementari. Su un’installazione Magento 2 fatta bene, Varnish gestisce la cache delle pagine pubbliche (home, categoria, prodotto per un visitatore anonimo) mentre Redis gestisce sessioni e cache degli oggetti, comprese le parti che Varnish non può mettere in cache perché cambiano da utente a utente (carrello, prezzi riservati, contenuti personalizzati). Usare solo uno dei due significa lasciare per strada buona parte del guadagno in velocità.

Un errore comune

Il problema che vedo più spesso non è l’assenza di cache, ma una cache mezza configurata: Redis attivo solo per le sessioni e non per la cache degli oggetti, oppure Varnish installato ma con un TTL (tempo di vita della cache) così basso da svuotarsi in continuazione, o ancora nessuna delle due reinstallata/riconfigurata dopo una migrazione di hosting. Il risultato è un sito che “ha la cache” sulla carta ma nei fatti rifà tutto il lavoro pesante a ogni visita — esattamente come se non ci fosse.

Gestisco configurazione e messa a punto di Varnish e Redis su e-commerce Magento 2 e WooCommerce. Se il tuo sito è lento nonostante un hosting adeguato, probabilmente il problema è proprio qui: scrivimi e lo verifichiamo insieme.