Cache del sito web & cache interna del server: come funziona la cache di WordPress

Ho verificato la cache del sito web e la cache interna del server su un server Nginx + Apache: le richieste di pagina di WordPress scendevano in ordine dal browser attraverso CDN, cache di pagina, OPcache e Redis e si fermavano al livello che aveva una copia. Le richieste di pagina arrivate direttamente al server di origine ricevevano subito da nginx il file HTML creato da WP Rocket, senza scendere fino a PHP e al database.
Ⅰ. Struttura della cache di WordPress
In informatica la cache è una tecnica che memorizza temporaneamente i dati per renderli accessibili in fretta; sul web funziona con lo stesso principio e contribuisce molto alle prestazioni.
Poiché il caching salva i dati, quando un visitatore apre un sito non serve richiedere tutto di nuovo al server ogni volta: i dati salvati si caricano in fretta e il tempo di caricamento della pagina si riduce. In questo modo diminuisce il carico sul server e migliora l'esperienza utente.
Le cache usate dalle richieste WordPress si dividono in due rami: la cache del sito web e la cache interna del server. Lo standard di caching HTTP, così come lo descrive MDN, chiama private cache la cache salvata solo nel browser di un singolo visitatore e shared cache le cache CDN e proxy condivise da molti visitatori; in questo articolo le due sono raggruppate come cache del sito web.
La cache di pagina, OPcache e la cache a oggetti sono cache legate al processo con cui WordPress viene eseguito nel server. Lo standard HTTP non prevede una categoria a parte, mentre la documentazione ufficiale di WordPress le descrive suddivise in plugin di caching (cache di pagina), cache a oggetti e cache del server (cache di opcode come OPcache).
Tutti gli ambiti in cui si usa la cache sono nell'articolo Cache: definizione e tutti gli ambiti in cui si usa il caching e i quattro rami dell'ottimizzazione delle prestazioni, cache compresa, nell'articolo Ottimizzazione delle prestazioni web: struttura e definizione dedicato all'argomento.
Nel simulatore qui sotto scegli una cache nell'albero a sinistra e premi un pulsante: vedrai a quale livello si ferma la richiesta. Il livello che chi gestisce un sito WordPress attiva per primo con un plugin di caching è la cache di pagina.
| Livello | Dove si trova | Cosa salva | Esempio con Nginx + Apache |
|---|---|---|---|
| Cache del browser | Dispositivo del visitatore | HTML · CSS · JS · immagini · font | CSS · immagini 7 giorni |
| Cache CDN · proxy | Davanti al server (edge · reverse proxy) | Copie di pagine · file statici | Bunny CDN |
| Cache di pagina | Disco · memoria del server | HTML creato da PHP | WP Rocket + nginx |
| OPcache | Memoria del server | Bytecode PHP | PHP 8.3, JIT disattivato |
| Cache a oggetti | Memoria del server | Risultati delle query · oggetti | Redis |
Ⅱ. Cache del sito web
La cache del sito web è la cache in cui il server indica con gli header di risposta come conservare i contenuti, e il browser del visitatore e le CDN o i proxy salvano una copia seguendo quell'indicazione. Gli header tipici sono [Cache-Control], [ETag] ed [Expires]; quando il periodo di conservazione scade, una richiesta condizionale ([304 Not Modified]) verifica se qualcosa è cambiato.
1️⃣ Cache del browser
La cache del browser è la cache HTTP salvata nel browser del visitatore: conserva HTML, CSS, JavaScript, immagini e font e, quando la stessa risorsa viene richiesta di nuovo, non arriva fino al server oppure controlla solo se è cambiata.
Il periodo di conservazione lo decide il server, non il visitatore. Il server Nginx + Apache qui sotto indica 7 giorni per CSS e immagini e risponde alle pagine HTML senza periodo, così vengono ricontrollate a ogni nuova visita.
If-None-Match: "6ab12775-2ee8"cache-control: max-age=604800 expires: Sat, 17 Oct 2026 03:21:00 GMT etag: "6ab12775-2ee8"
etag: "6ac9298c-95575" last-modified: Fri, 09 Oct 2026 17:51:08 GMT
2️⃣ Cache CDN · proxy
Le cache CDN e proxy stanno tra i visitatori e il server di origine e sono condivise da molti visitatori. Il forward proxy sta davanti, dal lato del visitatore, come in una rete aziendale, mentre reverse proxy e CDN stanno davanti al server: rispondono con la copia salvata al posto del server di origine.
Un tipico reverse proxy è Varnish Cache, e anche CDN come Bunny CDN e Akamai seguono la stessa struttura. Con un DNS per regione, i visitatori della regione del server di origine si collegano direttamente a esso, mentre a quelli di altre regioni risponde un edge CDN vicino (ad esempio Bunny CDN), che salva perfino l'HTML.
Struttura e vantaggi di una CDN sono nell'articolo Cos'è una CDN? Perché usarla e 5 vantaggi dedicato all'argomento.
Ⅲ. Cache interna del server
La cache interna del server è la cache legata al processo con cui WordPress costruisce la pagina dopo che la richiesta è arrivata al server di origine. Un server con Nginx + Apache gestisce le richieste nell'ordine qui sotto e, se una fase precedente trova una copia, le fasi successive vengono saltate.
Con Cloudways e ScalaHosting puoi scegliere Nginx + Apache come opzione. Su Cloudways scegli per ogni applicazione tra Hybrid stack (Nginx + Apache) e Lightning stack (solo Nginx), mentre su ScalaHosting puoi attivare in SPanel l'impostazione che mette Nginx davanti ad Apache.
| Cache | Cosa salva | Quando viene salvato |
|---|---|---|
| 1️⃣ Cache di pagina | Pagina HTML finita | 🅑 ⑤ Alla risposta, WP Rocket lo salva come file |
| 2️⃣ OPcache | Codice PHP compilato (bytecode) | 🅑 ② Quando un file PHP viene eseguito la prima volta |
| 3️⃣ Cache a oggetti | Frammenti di dati come risultati delle query e opzioni | 🅑 ③ Quando WordPress recupera i dati la prima volta |
1️⃣ Cache di pagina
La cache di pagina si chiama anche cache di pagina intera (full-page cache) e, dato che salva HTML, a volte è detta cache HTML. Salva come file HTML statico l'intera pagina web creata da PHP e, per la stessa richiesta di pagina, invia quel file senza eseguire PHP. È il caso 🅐 nell'ordine di elaborazione qui sopra.
Viene salvata nella memoria del server (RAM) o su disco (HDD/SSD): la memoria è veloce ma costosa e limitata, il disco ha spazio in abbondanza ma è relativamente lento.
| Variante | Esempio | Come salva e risponde |
|---|---|---|
| Plugin di caching | WP Rocket · WP Super Cache · W3 Total Cache · Cache Enabler | WordPress salva la pagina come file HTML e il server web invia quel file. |
| Cache del server web | Cache FastCGI di Nginx · LiteSpeed Cache | Il server web salva direttamente la risposta di PHP e la invia alla richiesta successiva. |
| Cache del reverse proxy | Varnish | Un server di cache messo davanti al server web salva la pagina e risponde. |
Con Nginx + Apache, nginx legge direttamente e invia il file HTML creato da WP Rocket, e l'header di risposta riporta [x-rocket-nginx-serving-file: HIT]. I passaggi per attivare e configurare la cache di pagina con WP Rocket sono nell'articolo Guida alle impostazioni di WP Rocket dedicato all'argomento.
2️⃣ OPcache
OPcache salva in memoria il bytecode del codice PHP già compilato, così quando lo stesso file viene eseguito di nuovo non passa dal parser di PHP. È incluso di default da PHP 5.5; APC e XCache, usati in passato, non supportano PHP 7 e oggi non si usano più. Corrisponde alla fase ② di 🅑 nell'ordine di elaborazione qui sopra.
| Variante | Stato | Descrizione |
|---|---|---|
| Zend OPcache | Incluso di default da PHP 5.5 | È la cache di opcode standard usata oggi e si attiva con [opcache.enable=1]. |
| OPcache JIT | Incluso in OPcache da PHP 8 | Converte ancora una volta il bytecode in codice macchina per eseguirlo; si attiva e disattiva con [opcache.jit]. |
| APC | Sviluppo terminato | La cache di opcode usata prima di OPcache; la funzione di cache dei dati è proseguita in APCu. |
| XCache | Sviluppo terminato | Non supporta PHP 7. |
| WinCache | Per server Windows (IIS) | Una cache di opcode che la documentazione ufficiale di WordPress cita insieme a OPcache. |
OPcache si attiva con l'impostazione PHP [opcache.enable=1], mentre il JIT, arrivato con PHP 8, si può disattivare a parte con [opcache.jit=disable]. Installazione e configurazione sono nell'articolo Zend OPcache: concetto, installazione e configurazione dedicato all'argomento.
3️⃣ Cache a oggetti
La cache a oggetti salva i risultati delle query al database o gli oggetti calcolati in un archivio in memoria come Redis o Memcached. Di default WordPress ricorda gli oggetti solo all'interno di una singola richiesta; per far restare i risultati anche dopo la fine della richiesta devi collegare un archivio come Redis. Corrisponde alla fase ③ di 🅑 nell'ordine di elaborazione qui sopra.
| Variante | Tipo | Resta dopo la richiesta? | Descrizione |
|---|---|---|---|
| WP_Object_Cache | Predefinito di WordPress | No | Cache integrata che ricorda solo all'interno di una singola richiesta. |
| Redis | Cache a oggetti | Sì | Un archivio in memoria separato, collegato tramite il drop-in del plugin Redis Object Cache. |
| Memcached | Cache a oggetti | Sì | Un archivio in memoria separato. |
| APCu | Cache a oggetti | Sì (nello stesso server) | Salva nella memoria condivisa usata da PHP. |
| File | Cache a oggetti | Sì | Salva come file su disco. |
| Buffer pool di InnoDB | Cache propria del database · non è una cache a oggetti | Sì | MySQL e MariaDB tengono in memoria i dati delle tabelle e gli indici. |
| Query cache | Cache propria del database · non è una cache a oggetti | — | Rimossa in MySQL 8.0; in MariaDB c'è ancora, ma è disattivata di default. |
WordPress si collega a Redis tramite il file drop-in ([object-cache.php]) che aggiunge il plugin Redis Object Cache. I passaggi di installazione sono nell'articolo Installare e configurare Redis Cache su WordPress dedicato all'argomento.
🔢 FAQ & contenuti consigliati









ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.