CDN Spiegata: Cosa Fa una Content Delivery Network | We.Inc
Come una CDN copia i tuoi file su server edge vicini ai visitatori, cosa significano cache hit e cache miss e quali header Cache-Control decidono cosa può conservare l'edge.
Una content delivery network è un insieme di server distribuiti in tutto il mondo che conservano copie dei file del tuo sito. Ai visitatori risponde un server edge vicino invece della tua origin, così le pagine si caricano con meno attesa e il tuo server gestisce molte meno richieste. Gli header Cache-Control decidono cosa può memorizzare l'edge.
I termini delle CDN in una riga ciascuno
Termine
Significato
Origin
Il tuo server o storage, dove si trovano i file reali
Edge
Un server della CDN vicino al visitatore che risponde per conto dell'origin
Cache hit
L'edge aveva già una copia aggiornata e ha risposto senza chiedere all'origin
Cache miss
L'edge non aveva nulla di utilizzabile, ha recuperato il file dall'origin e magari lo ha memorizzato
Purge
Dire alla CDN di eliminare le copie memorizzate così la richiesta successiva recupera quelle nuove
Su internet la distanza costa tempo: ogni nuova connessione richiede diversi viaggi di andata e ritorno prima che arrivi il primo byte. Una CDN accorcia questi viaggi rispondendo da un punto vicino al lettore. Questa guida spiega come funziona, cosa non può fare e come i tuoi header la controllano, con un simulatore da provare.
Scegli le direttive Cache-Control nel simulatore per vedere se un browser e un edge della CDN possono memorizzare la risposta, e per quanto tempo.
Copia la riga di header risultante per la configurazione del tuo server o hosting.
Leggi la tabella di riferimento per scegliere valori sensati per HTML, asset con hash e pagine private.
Dopo un deploy, fai il purge della CDN oppure affidati a nuovi nomi di file così i visitatori ricevono l'aggiornamento.
Dai ai nomi dei file un hash del contenuto, come app.3f9a1c.js, e mettili in cache per un anno con immutable. Una nuova build produce nuovi nomi, quindi non viene servito nulla di obsoleto.
Tieni l'HTML su una durata condivisa breve oppure fallo rivalidare, perché il suo URL non cambia mai tra un rilascio e l'altro.
Non lasciare mai che una CDN memorizzi pagine che mostrano i dati dell'account di una persona. Contrassegnale come private o no-store.
Caricare una libreria da una CDN pubblica non evita più un nuovo download: oggi i browser suddividono la cache per sito per motivi di privacy.
Domande frequenti
Una CDN rende più veloce qualsiasi sito?
Di solito sì, per i visitatori lontani dal tuo server, perché i viaggi di andata e ritorno sono più brevi e le connessioni vengono stabilite vicino. Può aggiungere un costo quando introduce un dominio in più da risolvere e a cui connettersi, ed è per questo che servire tutto dal tuo dominio attraverso la CDN è meglio che mescolare host diversi.
Cos'è s-maxage?
Una direttiva Cache-Control che imposta la durata di validità solo per le cache condivise come le CDN. All'edge ha la precedenza su max-age, mentre i browser continuano a usare max-age, così puoi lasciare che l'edge tenga una pagina per un'ora e il browser per un minuto.
Una CDN può mettere in cache le pagine dinamiche?
Sì, se la risposta è uguale per tutti. Anche pochi secondi di cache possono assorbire un picco di traffico. Le risposte diverse per ogni utente connesso non devono essere memorizzate in una cache condivisa.
Una CDN è un rischio per la sicurezza?
È un soggetto in più lungo il percorso dei tuoi contenuti. Se carichi script da una CDN di terze parti, aggiungi un hash Subresource Integrity così il browser rifiuta un file che è stato alterato.
Devo aggiungere una CDN da solo?
Molte piattaforme di hosting servono già i siti pubblicati attraverso una CDN. Leggi la documentazione del tuo hosting prima di aggiungerne una seconda, perché due livelli di cache rendono più difficili purge e debug.
Cosa succede durante una richiesta
Il resolver del visitatore restituisce l'indirizzo di un edge vicino. L'edge cerca l'URL nella sua memoria. In caso di hit risponde subito; in caso di miss chiede alla tua origin, inoltra la risposta e ne conserva una copia se gli header lo consentono.
Gli edge mantengono anche connessioni già aperte verso l'origin, quindi perfino un miss è spesso più rapido di un visitatore che si connette al tuo server dall'altra parte del mondo.
Cosa una CDN non può risolvere
Query lente al database, JavaScript pesante e immagini troppo grandi restano lenti anche se serviti da un edge. Una CDN elimina la distanza, non il lavoro.
Aggiunge anche un elemento in più che può guastarsi. Se la CDN ha un disservizio, ogni sito che sta dietro di essa ne risente, quindi vale la pena avere pagine di stato e un piano per quel caso.
Le direttive Cache-Control che contano all'edge
Cosa dice ogni direttiva a browser e CDN
Direttiva
Browser
Edge della CDN
max-age=N
Valida per N secondi
Valida per N secondi, a meno che non sia impostato s-maxage
s-maxage=N
Ignorata
Valida per N secondi, con precedenza su max-age
Può memorizzare
Può memorizzare, anche con un header Authorization
Può memorizzare
Non deve memorizzare
Non deve memorizzare
Non deve memorizzare
Salta la rivalidazione finché è valida
Salta la rivalidazione finché è valida
stale-while-revalidate=N
Può servire la copia scaduta per N secondi mentre la aggiorna
Lo stesso, se la CDN lo supporta
Ricette di header per tipo di file
Tre policy comuni
Gli asset con hash durano un anno, l'HTML si aggiorna all'edge ogni minuto e le pagine dell'account non toccano mai una cache condivisa.
Simulatore Cache-Control
Scegli le direttive e guarda chi può conservare la risposta.
max-age (secondi)
s-maxage (secondi, vuoto per nessuno)
Condivisione
Public, private o no-store
Aggiungi immutable
Browser
Edge della CDN
Può memorizzare, valida per {n} secondi
Non deve memorizzare
Può memorizzare, ma deve verificare con il server prima di riusarla