Cache WordPress: 4 Livelli che Trasformano un Sito Lento in un Missile
La cache è l’ottimizzazione con il ROI più alto su WordPress. Un sito senza cache serve ogni pagina eseguendo 50-200 query MySQL e compilando migliaia di file PHP. Un sito con cache ben configurata serve la stessa pagina dalla RAM in 10ms. La differenza è brutale.
Ma “abilita la cache” non basta. WordPress ha 4 livelli di cache, ognuno con un ruolo diverso. Usarli tutti insieme è ciò che fa la differenza tra un sito “abbastanza veloce” e un sito che vola.
I 4 Livelli di Cache
Livello 1: Page Cache (il più impattante)
Salva l’intera pagina HTML renderizzata. Le visite successive ricevono l’HTML pre-generato senza eseguire PHP o MySQL.
Opzioni, in ordine di performance:
| Soluzione | TTFB tipico | Dove gira | Setup |
|---|---|---|---|
| Nginx FastCGI Cache | 5-20ms | Web server (prima di PHP) | Config Nginx |
| Varnish | 5-15ms | Reverse proxy (davanti a Nginx) | Server dedicato |
| WP Super Cache | 50-100ms | Plugin WordPress (file statici) | Plugin WP |
| W3 Total Cache | 50-150ms | Plugin WordPress (configurabile) | Plugin WP |
| LiteSpeed Cache | 10-30ms | Web server (LiteSpeed only) | Plugin + server |
La raccomandazione per agenzie su VPS: Nginx FastCGI Cache. La configurazione completa è nel nostro articolo sulle ottimizzazioni server-side.
Livello 2: Object Cache (Redis)
Memorizza i risultati delle query MySQL in RAM. WordPress esegue le stesse query ripetutamente (opzioni del sito, dati utente, meta post). Redis le serve dalla memoria senza toccare il database.
# Installa e configura
sudo apt install redis-server
wp plugin install redis-cache --activate
wp redis enable
# Verifica
wp redis status
Impatto: -50-80% query MySQL su pagine non cachate (admin, ricerca, WooCommerce cart).
Livello 3: Browser Cache
Gli header HTTP dicono al browser di salvare file statici (CSS, JS, immagini) localmente. Le visite successive non scaricano nulla.
# Nginx
location ~* \.(css|js|jpg|jpeg|png|gif|webp|woff2|svg)$ {
expires 365d;
add_header Cache-Control "public, immutable";
}
Livello 4: CDN Cache
File statici serviti dal server più vicino all’utente. Cloudflare free + APO ($5/mese) è la combo migliore per WordPress: cacha anche le pagine HTML all’edge.
Invalidation: Il Problema Più Difficile
“There are only two hard things in computer science: cache invalidation and naming things.” Phil Karlton aveva ragione.
Quando un post viene aggiornato, la cache deve essere invalidata. Se non lo è, i visitatori vedono la versione vecchia.
- FastCGI Cache: usa il plugin Nginx Helper per purge automatico su publish/edit
- Redis: il plugin Redis Object Cache gestisce l’invalidation automaticamente
- Cloudflare: il plugin Cloudflare fa purge automatico. APO è ancora più intelligente
- Varnish: il plugin Proxy Cache Purge gestisce il ban/purge
La Configurazione Ideale per Scenario
| Scenario | Stack cache | Costo |
|---|---|---|
| Blog piccolo, hosting condiviso | WP Super Cache + Cloudflare Free | $0 |
| Agenzia, VPS Nginx | FastCGI Cache + Redis + Cloudflare | $0-5/mese |
| E-commerce WooCommerce | Redis + Cloudflare APO + FastCGI (no cart/checkout) | $5/mese |
| Alto traffico (100K+ visite/mese) | Varnish + Redis + Cloudflare Pro | $20/mese |
FAQ
La cache rompe WooCommerce?
Solo se cachi pagine che devono essere dinamiche (carrello, checkout, my-account). Tutte le soluzioni serie escludono queste pagine dalla cache. Verifica sempre che il carrello funzioni dopo aver abilitato la cache.
Redis o Memcached?
Redis. Supporta persistenza, data types più ricchi, e il plugin Redis Object Cache è eccellente. Memcached è leggermente più veloce in teoria, ma la differenza è irrilevante per WordPress.
Cloudflare APO vale $5/mese?
Sì. APO cacha le pagine HTML all’edge (non solo gli asset statici). Significa che un visitatore in Australia riceve la pagina dalla edge location australiana, non dal tuo server in Europa. Per siti con pubblico globale, è la singola migliore ottimizzazione dopo la page cache.