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

Informativa sull'affiliazione v3.1
Informativa sull'affiliazione v3.2 (solo mobile)

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).

🗂️ Le cache attraversate da una richiesta WordPress
🌐 Cache del sito webCache HTTP · classificazione MDN
private cacheCache del browser
shared cache
proxy cacheProxy di reti aziendali e degli operatori
managed cacheCDN · reverse proxy (Varnish)
🖥️ Cache interna del serverClassificazione della documentazione ufficiale di WordPress
Cache di paginaHTML statico creato da un plugin di caching (WP Rocket)
OPcacheCache di opcode · esecuzione PHP
Cache a oggettiDati che restano anche a richiesta conclusa (Redis)

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.

🧭 Simulatore dei livelli di cacheSimulatore esplicativo
🗂️ Le cache attraversate da una richiesta WordPress
🧰 Tipo di richiesta
Cache del browser
È la cache HTTP salvata nel browser del visitatore. Con [Immagine · CSS] premi [Prima visita] → [Nuova visita]: dalla seconda volta nessuna richiesta arriva al server.
Header di cache HTTP
Sono le regole con cui il server comunica al browser e alla CDN per quanto tempo conservare una copia. Le righe di header nel registro delle risposte sono valori reali ricevuti da un server Nginx + Apache.
Cache CDN · proxy
È una copia condivisa da molti visitatori. Attiva [Usa CDN] e premi [Prima visita] → [Nuova visita]: la risposta si chiude sull'edge.
Cache di pagina
Salva come file l'HTML creato da PHP. Premi [Nuova visita] e la richiesta non scende fino a PHP e al database.
OPcache
Tiene in memoria il bytecode PHP compilato. Con [Visita dopo la modifica] PHP viene eseguito di nuovo, ma la compilazione viene saltata.
Cache a oggetti
Salva i risultati delle query in Redis. Con [Visita dopo la modifica] vengono riletti da MariaDB solo i dati dell'articolo modificato.
Flusso completo
La richiesta scende dall'alto verso il basso e si ferma al primo livello che ha una copia.
LivelloDove si trovaCosa salvaEsempio con Nginx + Apache
Cache del browserDispositivo del visitatoreHTML · CSS · JS · immagini · fontCSS · immagini 7 giorni
Cache CDN · proxyDavanti al server (edge · reverse proxy)Copie di pagine · file staticiBunny CDN
Cache di paginaDisco · memoria del serverHTML creato da PHPWP Rocket + nginx
OPcacheMemoria del serverBytecode PHPPHP 8.3, JIT disattivato
Cache a oggettiMemoria del serverRisultati delle query · oggettiRedis
Un simulatore esplicativo che funziona solo nel tuo browser. Le righe di header nel registro delle risposte sono state ricevute il 10 ottobre 2026 da un server Nginx + Apache; i valori tra parentesi, come l'ETag dopo la modifica, sono esempi.

Ⅱ. 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.

📨 Header di risposta misuratiConfigurazione Nginx + Apache · 2026-10-10
💻 Computer del visitatoreCache del browser
──────▶① Prima richiestaGET /style.css
🖥️ Server del sitoNginx + Apache
💻 Computer del visitatoreCache del browser
◀──────② File + istruzioni di conservazionecache-control: max-age=604800
🖥️ Server del sitoNginx + Apache
③ Il browser conserva il file per 7 giorni come indicato e, per le visite in quel periodo, non invia richieste al server.
💻 Computer del visitatoreCache del browser
──────▶④ Verifica dopo la scadenzaIf-None-Match: "6ab12775-2ee8"
🖥️ Server del sitoNginx + Apache
💻 Computer del visitatoreCache del browser
◀──────⑤ Non modificatoHTTP/2 304 (senza corpo)
🖥️ Server del sitoNginx + Apache
🖼️ CSS · immagini
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Nel browser è 7 giorni il periodo di validità della copia salvata, usata senza interpellare di nuovo il server.
📄 Pagina HTML
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Non c'è un periodo di conservazione indicato, quindi a una nuova visita il browser chiede prima con l'ETag se qualcosa è cambiato.
Se la richiesta si ripete con lo stesso ETag, il server restituisce, senza corpo, solo [HTTP/2 304], e il browser continua a usare la copia salvata.

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.

👤 Visitatore nella regione del server di origineIl DNS restituisce l'indirizzo di origine
→
🖥️ Server di origineRisponde direttamente, senza passare dalla CDN.
👤 Visitatore di un'altra regioneIl DNS restituisce l'indirizzo di un edge vicino
→
☁️ Edge di Bunny CDNSe ha una copia dell'HTML o del file, risponde qui.
→
🖥️ Server di origineSi raggiunge solo quando l'edge non ha una copia.

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.

🅐 Quando la cache di pagina ha il fileLa maggior parte delle richieste di pagina dei visitatori non connessi
① nginx riceve la richiestaIl server web riceve la richiesta arrivata al server di origine.
↓
1️⃣ Cache di pagina ↓② Risposta con il file della cache di paginanginx invia così com'è il file HTML creato da WP Rocket.x-rocket-nginx-serving-file: HIT
Finisce senza passare da PHP · OPcache · Redis · MariaDB.
🅑 Quando la cache di pagina non ha il filePrima visita subito dopo aver svuotato la cache · schermata di login · richieste AJAX
① nginx riceve la richiestaNon c'è il file, quindi la richiesta passa ad Apache.
↓
2️⃣ OPcache ↓② Esecuzione PHP · OPcacheEsegue i file PHP di WordPress come bytecode compilato.
↓
3️⃣ Cache a oggetti ↓③ Cache a oggetti (Redis)I risultati delle query e gli oggetti salvati arrivano da Redis.
↓
④ MariaDBInterroga solo i dati che non sono in Redis e legge quelli usati spesso dal buffer pool di InnoDB (memoria).
↓
⑤ Risposta · salvataggio nella cache di paginaL'HTML finito viene inviato e WP Rocket lo salva come file, così la richiesta successiva viene gestita come 🅐.
In base a Nginx + Apache (passa ad Apache e PHP solo quando manca il file della cache di pagina), verificato il 2026-10-10.

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.

🖥️ Hosting in cui puoi scegliere Nginx + Apache
CloudwaysScelta dello stack per applicazione
Hybrid stackNginx + Apache
Lightning stackSolo Nginx
Cloudways →
ScalaHostingImpostazioni del server web in SPanel
PredefinitoApache
Attiva NginxNginx + Apache
ScalaHosting →
CacheCosa salvaQuando viene salvato
1️⃣ Cache di paginaPagina HTML finita🅑 ⑤ Alla risposta, WP Rocket lo salva come file
2️⃣ OPcacheCodice PHP compilato (bytecode)🅑 ② Quando un file PHP viene eseguito la prima volta
3️⃣ Cache a oggettiFrammenti di dati come risultati delle query e opzioni🅑 ③ Quando WordPress recupera i dati la prima volta

1️⃣ Cache di pagina

  • ↪️ Cache di pagina intera o cache HTML

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.

VarianteEsempioCome salva e risponde
Plugin di cachingWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress salva la pagina come file HTML e il server web invia quel file.
Cache del server webCache FastCGI di Nginx · LiteSpeed CacheIl server web salva direttamente la risposta di PHP e la invia alla richiesta successiva.
Cache del reverse proxyVarnishUn 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.

VarianteStatoDescrizione
Zend OPcacheIncluso di default da PHP 5.5È la cache di opcode standard usata oggi e si attiva con [opcache.enable=1].
OPcache JITIncluso in OPcache da PHP 8Converte ancora una volta il bytecode in codice macchina per eseguirlo; si attiva e disattiva con [opcache.jit].
APCSviluppo terminatoLa cache di opcode usata prima di OPcache; la funzione di cache dei dati è proseguita in APCu.
XCacheSviluppo terminatoNon supporta PHP 7.
WinCachePer 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.

VarianteTipoResta dopo la richiesta?Descrizione
WP_Object_CachePredefinito di WordPressNoCache integrata che ricorda solo all'interno di una singola richiesta.
RedisCache a oggettiSìUn archivio in memoria separato, collegato tramite il drop-in del plugin Redis Object Cache.
MemcachedCache a oggettiSìUn archivio in memoria separato.
APCuCache a oggettiSì (nello stesso server)Salva nella memoria condivisa usata da PHP.
FileCache a oggettiSìSalva come file su disco.
Buffer pool di InnoDBCache propria del database · non è una cache a oggettiSìMySQL e MariaDB tengono in memoria i dati delle tabelle e gli indici.
Query cacheCache 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

Sta rispondendo una vecchia copia rimasta nella cache di pagina o nella CDN. Svuota la cache di quell'articolo nel plugin di caching e, se usi una CDN, svuota anche la copia nella CDN.

I plugin di cache di pagina come WP Rocket, con le impostazioni predefinite, non inviano pagine salvate agli utenti che hanno effettuato l'accesso. Le schermate di amministrazione e le pagine viste dopo l'accesso vengono ricreate ogni volta da PHP, e in quel caso sono OPcache e la cache a oggetti a sostenere la velocità.

In Chrome premi [Ctrl+Shift+R] ([Cmd+Shift+R] su Mac) per ricaricare la pagina attuale senza cache. Per cancellare tutta la cache salvata, vai su [Altro] in alto a destra → [Elimina dati di navigazione] e scegli [Immagini e file memorizzati nella cache].

💾 Articoli sulla cache 10 articoli
🗂️ Cache
📋 Cache: definizione e tutti gli ambiti 📄 Cache del sito web & cache interna del server
📋 Guida alle impostazioni di WP Rocket 📝 Zend OPcache 📝 Installare Redis Cache
📝 Cos'è una CDN? 📝 Varnish Cache
📋 Test di velocità di WP Rocket 📝 Un caso di miglioramento della velocità 📝 Plugin di cache · ottimizzazione

ℹ️ 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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Dimostra di essere umano: 1   +   6   =