Cos'è una CDN: significato, perché usarla e come collegarla a WordPress
Una CDN (Content Delivery Network) è una rete di distribuzione dei contenuti che salva i file del server di origine su server edge in più regioni e risponde dal server più vicino al visitatore. Per vedere se i server edge rispondono dalla cache abbiamo controllato le intestazioni di risposta di un servizio pubblico di distribuzione di librerie come jsDelivr: il file di jQuery veniva servito da una copia in cache. I due modi per collegare WordPress, la sostituzione degli URL dei file e il proxy DNS, li abbiamo confrontati in base alla documentazione ufficiale.
1️⃣ Significato di CDN: server edge e server di origine
Un POP (Point of Presence) è il data center che ospita i server edge, e la richiesta del visitatore viene inoltrata al POP più vicino.
Il server edge che riceve una richiesta risponde subito se ha il file salvato; altrimenti prende il file dal server di origine, risponde e lo salva sul server edge. CloudFront, la CDN di AWS, inizia la consegna al visitatore appena arriva il primo byte dal server di origine (secondo la documentazione ufficiale di AWS).

Sui server edge vengono salvati solo i file richiesti dai visitatori, quindi anche per lo stesso file la prima richiesta su ogni server edge arriva fino al server di origine.
Prendere i file quando arriva una richiesta, come in questo caso, si chiama metodo pull; esiste anche il metodo push, in cui carichi i file sulla CDN in anticipo.
2️⃣ Perché usare una CDN: distanza e carico del server di origine
Più il visitatore e il server sono lontani, più si allunga il tempo di andata e ritorno (RTT) di ogni richiesta. Aprendo una pagina partono, oltre all'HTML, anche le richieste di immagini, CSS e JavaScript, quindi se risponde un server edge vicino il tempo di andata e ritorno si accorcia per ogni richiesta.
Le richieste a cui risponde un server edge non arrivano al server di origine, così calano anche l'uso della CPU e il traffico (larghezza di banda) del server di origine. Se colleghi il DNS tramite il proxy di Cloudflare, l'IP del server di origine non viene esposto e gli attacchi DDoS vengono bloccati prima dalla CDN (secondo la documentazione ufficiale di Cloudflare).
Per un sito i cui visitatori si trovano nella stessa regione del server di origine, il vantaggio della distanza è piccolo. Per questi siti, il vantaggio maggiore di una CDN non è ridurre il tempo di risposta ma alleggerire il carico del server di origine e risparmiare traffico.
3️⃣ File messi in cache: file statici e HTML
Con le impostazioni predefinite, Cloudflare mette in cache solo file statici come immagini, CSS e JavaScript, individuati in base all'estensione (secondo la documentazione ufficiale di Cloudflare). L'HTML delle pagine e il JSON sono esclusi dalla cache predefinita, quindi anche dopo aver collegato Cloudflare risponde ancora il server di origine.
Per mettere in cache anche l'HTML devi creare a parte una regola di cache sulla CDN. In questo caso escludi dalla regola le pagine il cui contenuto cambia da persona a persona, come quelle degli utenti connessi o il carrello, così da evitare che si mescoli la schermata di un altro visitatore.
4️⃣ Collegamento a WordPress: sostituzione degli URL dei file e proxy DNS
Per collegare una CDN a WordPress sostituisci solo gli URL dei file statici con quelli della CDN, oppure imposti il DNS del dominio sul proxy della CDN in modo che tutte le richieste passino dalla CDN.
| Modalità | Dove si collega | Richieste che passano dalla CDN | IP del server di origine |
|---|---|---|---|
| Sostituzione degli URL dei file | Inserire l'indirizzo della CDN (CNAME) nelle impostazioni CDN del plugin di cache | File statici come immagini, CSS e JavaScript | Resta pubblico |
| Proxy DNS | Collegare i record DNS del dominio al proxy della CDN | Tutte le richieste HTTP e HTTPS del sito | Nascosto dietro la CDN |
Con il metodo di sostituzione degli URL dei file, nelle impostazioni CDN di un plugin di cache come WP Rocket inserisci l'indirizzo (CNAME) fornito dal provider della CDN. Una volta inserito, gli URL di immagini, CSS e JavaScript nell'HTML della pagina diventano quelli della CDN (secondo la documentazione ufficiale di WP Rocket). L'HTML continua a essere servito dal server di origine.

Con il metodo del proxy DNS, il DNS del dominio viene gestito dal provider della CDN. Cloudflare offre anche un modo per collegare il proxy senza spostare i nameserver, aggiungendo solo record CNAME presso il tuo provider DNS attuale. Questo metodo è disponibile solo dai piani Business in su (secondo la documentazione ufficiale di Cloudflare).
5️⃣ Controllare i cache hit: le intestazioni cf-cache-status e age
Per sapere se la CDN ha servito un file dalla cache si guardano le intestazioni di risposta. Qui sotto trovi il comando con cui abbiamo controllato le intestazioni di risposta del file di jQuery distribuito da jsDelivr e il risultato.
curl -sI https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js | grep -iE "^(cache-control|cf-cache-status|age|server):"cache-control: public, max-age=31536000, s-maxage=31536000, immutable
age: 45920
cf-cache-status: HIT
server: cloudflare[server: cloudflare] indica che questa risposta è stata inviata da un server edge di Cloudflare, e [cf-cache-status: HIT], aggiunto da Cloudflare, significa che la risposta arriva dalla cache. [age: 45920] indica che il file è in cache da circa 12 ore e 45 minuti. [max-age=31536000] è l'istruzione del server di origine secondo cui il file può essere conservato per 1 anno.
Per vedere fin dove arriva la richiesta quando il valore è [MISS], [DYNAMIC] o [BYPASS] invece di [HIT], premi i pulsanti dei valori nel diagramma qui sotto.
cf-cache-status: HITcf-cache-status: MISScf-cache-status: DYNAMICcf-cache-status: BYPASSCache-Control: no-store o private🔢 FAQ & contenuti consigliati
Cache
Cache: definizione e tutti gli ambiti in cui si usa il caching
Divide gli ambiti in cui si usa la cache, dal browser fino all'interno del server, inclusa la cache dei server edge di una CDN.
Varnish
Installare e configurare Varnish Cache su Apache e Nginx
Spiega come installare e configurare la cache reverse proxy Varnish davanti ad Apache e Nginx.
Cloudflare
Configurare la CDN Cloudflare: piano Pro
Collega Cloudflare a WordPress con il metodo del proxy DNS e poi tratta la differenza di velocità e le impostazioni tra i piani Free e Pro.
ℹ️ 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.