Un CDN è una rete di server distribuiti che mette in cache i contenuti vicino agli utenti, così pagine e file si caricano in fretta ovunque. Il problema che risolve è di fisica: una richiesta che parte da São Paulo verso un server a Francoforte paga il round trip in latenza, ogni volta. Un CDN risponde da São Paulo – e una precisazione evita confusioni senza fine: completa l’hosting, non lo sostituisce mai.
Punti chiave
| Domanda | Risposta |
|---|---|
| Che cos’è | Server edge distribuiti che custodiscono copie in cache dei contenuti |
| Il problema che risolve | La distanza – la latenza cresce con il round trip fino all’origine |
| Il meccanismo | Routing verso l’edge più vicino → un cache hit risponde subito; un miss va a prendere il contenuto all’origine una volta sola |
| Le leve | Header Cache-Control, TTL, purge o nomi di file versionati |
| Che cosa non è | Un hosting web, né edge computing – distribuzione, non archiviazione né logica |
Le leve che lo fanno funzionare
Tutto il contratto di caching sta in un unico header HTTP – ed è il pezzo meno spiegato di ogni presentazione di un CDN:
# L'istruzione dell'origine a ogni cache tra sé e l'utente:
Cache-Control: public, max-age=300, s-maxage=86400, stale-while-revalidate=3600
public → qualsiasi cache può conservarlo
max-age=300 → browser: fresco per 5 minuti
s-maxage=86400 → edge del CDN: freschi per 24 ore
stale-while-revalidate → servire subito lo scaduto, aggiornare in background
# L'altra strategia: non scadere mai, non purgare mai – versionare il nome del file
/_assets/app.3f9c1b.css → in cache "per sempre"; una nuova build, un nuovo URL
Conta anche la provenienza dei file in un’app: su un backend gestito, il caricamento di un file restituisce un URL pronto per la distribuzione, con una politica di cache già sensata:
// JavaScript / Node.js — Back4app JS SDK
// Upload once; the returned URL serves from edge cache worldwide
const file = new Parse.File('hero.webp', { base64: imageData });
await file.save();
console.log(file.url()); // CDN-backed, cache-friendly URL // Flutter / Dart — Back4app Flutter SDK
final file = ParseFile(File('hero.webp'));
await file.save();
print(file.url); // CDN-backed, cache-friendly URL // iOS / Swift — Back4app Swift SDK
let file = ParseFile(name: "hero.webp", data: imageData)
file.save { result in
if case .success(let saved) = result {
print(saved.url ?? "") // CDN-backed, cache-friendly URL
}
} // Android / Kotlin — Back4app Android SDK
val file = ParseFile("hero.webp", imageBytes)
file.saveInBackground { e ->
if (e == null) Log.d("CDN", file.url) // CDN-backed, cache-friendly URL
} Anatomia di una richiesta
Il vocabolario in un colpo solo: l’origine è il server reale – la fonte di verità. Un PoP (point of presence) è una sede di data center del CDN; i server edge sono le macchine di cache che ospita. Il cache-hit ratio – la quota di richieste servite senza toccare l’origine – è la metrica che tutto l’esercizio ottimizza, e le leve sono gli header visti sopra. Per gli utenti migliora il TTFB (time to first byte) e, quando pagine intere sono in cache all’edge, le metriche di caricamento che ne derivano.
CDN vs. hosting web vs. edge computing
| Dimensione | Hosting web (origine) | CDN | Edge computing |
|---|---|---|---|
| Ruolo | Conserva il contenuto di riferimento | Distribuisce copie in cache | Esegue logica vicino agli utenti |
| Risponde a | ”Dove vive il sito?" | "Perché è veloce a Tokyo?" | "Si può calcolare a Tokyo?” |
| Stato | Permanente | Temporaneo, legato al TTL | Di solito stateless |
| Senza di esso | Nessun sito | Sito lento, origine esposta | Un round trip a ogni decisione |
| Contenuto tipico | Tutto, una volta sola | Asset statici, media, pagine intere in cache | Personalizzazione, controlli di autenticazione, riscritture |
La definizione di MDN aggiunge l’avvertenza che le pagine dei fornitori saltano: gli script serviti da un CDN di terze parti sono una dipendenza nella catena di fornitura (gli attributi di integrità esistono per un motivo), e una risoluzione DNS in più verso un CDN può addirittura costare tempo alla prima visita – una leva, non magia.
Casi d’uso comuni
- Asset statici su larga scala. CSS, JavaScript, font, immagini – nomi di file con hash e TTL lunghi trasformano le visite ripetute in puro traffico edge.
- Media e download. Segmenti video e file di grandi dimensioni, dove la banda dell’origine sarebbe sia la fattura sia il collo di bottiglia.
- Pubblico globale. La stessa pagina servita sotto i 100 ms su quattro continenti, senza far girare server su quattro continenti.
- Picchi di traffico e lanci. L’edge assorbe l’onda; l’origine ne vede una frazione.
- Postura di sicurezza. Origine nascosta dietro un reverse proxy, TLS terminato all’edge, attacchi volumetrici dissipati su tutta la rete.
Serve un CDN? Matrice decisionale
| Un CDN rende quando… | Conviene farne a meno (o rinviarlo) quando… |
|---|---|
| Gli utenti sono lontani dall’origine | Il pubblico si trova nella regione del server |
| Asset e media dominano il traffico | L’app è piccola, dinamica e centrata sulle API |
| I picchi di traffico fanno parte del mestiere | Il traffico è troppo basso perché le cache restino calde |
| La banda dell’origine è un costo reale | Il pezzo mobile in più pesa più dei ms risparmiati |
| Serve assorbire i DDoS davanti all’origine | Si finirebbe per mettere in cache risposte personalizzate (impossibile) |
La riga onesta che nessuno stampa: su un sito a basso traffico le copie in cache scadono tra un visitatore e l’altro, ogni richiesta è un miss e il CDN aggiunge un salto per niente. Distanza e volume sono i dati di ingresso; senza nessuno dei due, conviene sistemare prima qualcos’altro.
Limiti e trade-off
- Il contenuto scaduto è il guasto predefinito. TTL lunghi significano che il file di ieri viene servito oggi con sicurezza; il rimedio è la purge (lenta, diversa per ogni CDN) o i nomi di file versionati (meglio).
- L’invalidazione della cache è davvero difficile. Non per niente figura tra i due famosi problemi difficili dell’informatica – conviene progettare gli URL per averne bisogno raramente.
- Il contenuto dinamico resiste al caching. Le risposte specifiche per utente non si condividono; accelerazione e logica edge aiutano, ma il lavoro lo fa sempre l’origine.
- Una dipendenza sul percorso critico. I guasti di un CDN sono eventi meteorologici di internet; quando cade l’edge, il sito risulta giù, per quanto l’origine stia benissimo.
- Il debug guadagna un livello. Quale cache ha servito questa risposta? Con quali header? Gli header di stato della cache e il comportamento di ogni singolo edge diventano parte della superficie di osservabilità.
I CDN su Back4app
Back4app è una piattaforma open-source di Backend as a Service (BaaS) che combina database gestito, API REST e GraphQL generate automaticamente, autenticazione, archiviazione di file e funzioni serverless con Cloud Code. La distribuzione via CDN è integrata nel livello dei file: basta caricare un file con qualunque SDK (le schede qui sopra) e l’URL restituito è pronto per la distribuzione – stabile, memorizzabile in cache e indipendente dal traffico dinamico delle API, il che tiene separate in modo netto la metà memorizzabile e quella non memorizzabile dell’app. I frontend web ospitati su Back4app Containers si collocano naturalmente dietro qualsiasi CDN, con il pattern classico – asset con hash a vita lunga, HTML a vita breve – configurato in un solo header.
Domande frequenti
Che cos'è un CDN, in parole semplici?
Una rete di server distribuiti geograficamente che conserva copie in cache dei contenuti vicino agli utenti. Invece che ogni richiesta viaggi fino al server di origine – a volte dall'altra parte di un oceano – la maggior parte riceve risposta in pochi millisecondi da un server edge vicino. La maggioranza del traffico web dei grandi siti viene servita così.
Come funziona un CDN?
Routing più caching. La richiesta di un utente viene indirizzata al point of presence più vicino; se quel server edge ha una copia fresca in cache (un cache hit), risponde immediatamente. Altrimenti (un miss), l'edge va a prendere il contenuto all'origine, ne conserva una copia per il TTL configurato e serve dalla cache tutti gli utenti vicini fino alla scadenza.
Un CDN è la stessa cosa dell'hosting web?
No – un CDN completa l'hosting, non lo sostituisce mai. L'host (l'origine) conserva il contenuto di riferimento; il CDN ne detiene copie temporanee all'edge. Se l'origine scompare, alla fine il CDN non ha più nulla da servire. La divisione dei compiti: l'origine è la fonte di verità, il CDN è il livello di distribuzione.
Che cosa sono cache hit, cache miss e TTL?
Un hit significa che l'edge ha servito la sua copia in cache – veloce, e l'origine non si è accorta di nulla. Un miss significa che l'edge non aveva una copia fresca ed è andato a prenderla all'origine – più lento, una volta sola, per il primo visitatore della zona. Il TTL (time to live) è quanto a lungo una copia in cache conta come fresca, impostato con gli header Cache-Control. Progettare una cache è soprattutto l'arte di massimizzare gli hit senza servire contenuto scaduto.
Un CDN può servire contenuti dinamici?
Non dalla cache nel senso classico – una risposta API personalizzata cambia da utente a utente. I CDN però accelerano comunque il traffico dinamico con rotte ottimizzate, connessioni persistenti e TLS terminato vicino all'utente; e le piattaforme moderne eseguono logica direttamente all'edge. La divisione pratica: mettere in cache in modo aggressivo gli asset statici, accelerare le risposte dinamiche e calcolare all'edge dove rende.
Come protegge un CDN dagli attacchi DDoS?
Essendo enorme e trovandosi sul percorso. Come reverse proxy, il CDN nasconde l'indirizzo dell'origine, e la sua capacità distribuita assorbe gli attacchi volumetrici su molti point of presence – traffico che schiaccerebbe un server singolo si dissipa su una rete globale, con il filtraggio applicato all'edge prima che qualcosa arrivi a destinazione.
Quando NON serve un CDN?
Quando il pubblico si trova nella stessa regione del server, un salto in più attraverso un edge lontano può addirittura aggiungere latenza; quando il traffico è così basso che le cache scadono tra un visitatore e l'altro (miss perpetui non servono a nulla); e quando una piccola app dinamica semplicemente non è limitata dalla distribuzione. Un CDN è una leva su distanza e volume – senza nessuna delle due, è configurazione senza beneficio.
Qual è la differenza tra un CDN e l'edge computing?
Un CDN avvicina i contenuti agli utenti; l'edge computing avvicina il calcolo. Distribuzione contro decisioni: un CDN risponde a "servire questo file in fretta ovunque", le funzioni edge rispondono a "eseguire questa logica vicino all'utente". In pratica i due convergono – le piattaforme CDN moderne eseguono codice nei loro point of presence – ma il modello mentale tiene.