
cdnjs, jsDelivr o unpkg: cosa li distingue davvero ora che la cache del browser è partizionata
- vuetelemetry
- Strumenti
- 8 min di lettura
Cloudflare ha appena ricostruito cdnjs sulla propria piattaforma per sviluppatori senza cambiare un solo URL. È il momento giusto per riesaminare la scelta tra i tre CDN JavaScript pubblici, perché l'argomento che la maggior parte degli sviluppatori usa ancora per giustificarli ha smesso di essere vero nel 2020.
Una migrazione che nessuno doveva notare
Il 30 luglio 2026 Cloudflare ha pubblicato il resoconto della ricostruzione di cdnjs, il CDN pubblico che gestisce per le librerie JavaScript e CSS, sulla propria piattaforma per sviluppatori; InfoQ lo ha ripreso il 14 agosto. Le cifre fornite da Cloudflare vanno riportate così come sono: cdnjs serve circa 9 miliardi di richieste al giorno, quasi 108 000 richieste al secondo distribuite su oltre 330 data center, con un tasso di successo della cache del 98,6 %, ed è usato da circa il 12 % dei siti web.
Sotto, l'architettura è cambiata. R2 è diventato la fonte di verità dei file pubblicati, KV conserva i metadati dei pacchetti, le versioni e gli hash Subresource Integrity, e un Worker gestisce le richieste con Workers Cache davanti. Ciò che non è cambiato è proprio ciò che conta per chiunque abbia mai incollato un tag script in una pagina: Cloudflare indica che contenuto dei pacchetti, URL e hash SRI sono stati tutti preservati. La migrazione era pensata per essere invisibile.
Questa invisibilità è il vero prodotto. Un CDN pubblico fa una sola promessa che conti: che l'URL incollato nel vostro <head> cinque anni fa risponda ancora con gli stessi byte oggi. Tutto il resto, il numero di punti di presenza, il tasso di cache, il runtime su cui è costruito, è dettaglio di implementazione. Questi servizi si giudicano dalla capacità di cambiare tutto sotto senza cambiare nulla di ciò da cui dipendete.
Tre CDN, tre promesse diverse

I tre candidati abituali non sono della stessa natura, e confonderli è l'errore più diffuso. cdnjs serve un catalogo di librerie curato: un processo umano decide cosa entra. jsDelivr serve pacchetti npm, repository GitHub e build ESM, e funziona come multi-CDN, distribuendo le richieste tra Cloudflare e Fastly. unpkg è il più semplice dei tre: uno specchio diretto di npm, dove tutto ciò che viene pubblicato diventa subito raggiungibile via URL.
L'argomento che ha smesso di essere vero nel 2020
Ora l'argomento da abbandonare. Per anni la giustificazione standard di un CDN pubblico è stata la cache condivisa: usate il CDN che usano tutti, e il vostro visitatore avrà già jQuery in cache da un altro sito, quindi non costa nulla. Non è più vero da tempo. I browser partizionano ormai la cache HTTP per sito visitato: Safari dal 2013, Chrome dalla versione 86 nel 2020, Firefox dalla versione 85 nel 2021.
- cdnjs: catalogo curato, gestito da Cloudflare; la ricostruzione del 2026 ha preservato URL, contenuto dei pacchetti e hash SRI
- jsDelivr: npm, GitHub ed ESM; multi-CDN tra Cloudflare e Fastly; i file già serviti restano disponibili anche se il pacchetto scompare
- unpkg: uno specchio diretto di npm, il più semplice dei tre e il più esposto ai cambiamenti a monte
- La cache condivisa tra siti non esiste più: Safari 2013, Chrome 86 nel 2020, Firefox 85 nel 2021; l'argomento storico dei CDN pubblici è superato
- Aggiungete sempre integrity e crossorigin a un tag di terze parti; con un bundler moderno l'auto-hosting è spesso più veloce e più sicuro di tutti e tre
Questa partizione significa che un file scaricato sul sito A viene riscaricato sul sito B, anche con lo stesso URL sullo stesso CDN. Il cambiamento è stato fatto per la privacy: una cache condivisa rivela la cronologia di navigazione, perché un sito può cronometrare una richiesta e dedurre se siete stati altrove. Il guadagno di prestazioni era reale, è stato abbandonato deliberatamente, e ogni consiglio che vi si appoggia ancora descrive il web prima del 2020.
Cosa li separa davvero oggi
Tolto questo argomento, il confronto diventa più stretto e più onesto. Restano disponibilità, immutabilità e quanta superficie di terze parti siete disposti ad agganciare alla vostra pagina. Sull'immutabilità, jsDelivr indica che un file già servito viene conservato in modo permanente: un pacchetto ritirato da npm continua quindi a rispondere invece di rompere i siti che lo citavano. unpkg, essendo uno specchio, segue npm più da vicino. Chi ricorda la scomparsa di left-pad da npm nel 2016 sa che non è un caso di scuola.
Sulla disponibilità, il design multi-CDN di jsDelivr fa sì che un fornitore in difficoltà non trascini con sé il servizio. cdnjs dipende interamente da Cloudflare, e la migrazione del 2026 lo ha reso più omogeneo, non più ridondante. È un compromesso più che un difetto: un unico operatore molto grande con oltre 330 sedi, contro più operatori con modalità di guasto indipendenti. Scegliete il guasto che preferireste spiegare.
L'attributo integrity non è opzionale
Qualunque sia la scelta, usate Subresource Integrity. Un attributo integrity insieme a crossorigin="anonymous" chiede al browser di rifiutare un file il cui hash non corrisponde, e fa tutta la differenza tra fidarsi di un URL e fidarsi di chi lo controlla. Senza, concedete a una terza parte un diritto di esecuzione incondizionato su ogni pagina del vostro sito. Il tag nella foto qui sopra non ha alcun attributo integrity, ed è la norma più che l'eccezione.
L'opzione che la maggior parte dei confronti salta
Resta l'opzione che la maggior parte dei confronti salta: non usare affatto un CDN pubblico. Servite il file della libreria dalla vostra origine, insieme al resto degli asset. Poiché la cache è partizionata, dalla cache condivisa non guadagnavate comunque nulla, e l'auto-hosting elimina una risoluzione DNS, una negoziazione TLS e una connessione verso un host che non controllate. Il vostro bundler lo fa già. Per la maggior parte dei siti nel 2026 è la scelta al tempo stesso più veloce e più sicura.
Un'ultima onestà su tutti e tre: sono forniti al meglio, senza impegno contrattuale di disponibilità. Sono infrastrutture pubbliche generose, non un servizio che vi è dovuto. Se la vostra pagina diventa inutilizzabile quando una libreria non si carica, quella dipendenza non deve stare sull'offerta gratuita di un terzo, per quanti data center abbia.
FAQ
Un CDN pubblico velocizza ancora il mio sito perché il file è già in cache da un altro sito?
No. I browser partizionano la cache HTTP per sito visitato: un file scaricato su un sito viene scaricato di nuovo su un altro, anche con lo stesso URL e lo stesso CDN. Safari partiziona dal 2013, Chrome dalla versione 86 nel 2020 e Firefox dalla versione 85 nel 2021. Il cambiamento è stato fatto per la privacy, perché una cache condivisa permette a un sito di dedurre quali altri siti avete visitato cronometrando una richiesta. Ogni raccomandazione che si basa ancora sulla cache condivisa descrive il web prima del 2020.
La migrazione di cdnjs nel 2026 ha rotto gli URL esistenti?
No. Cloudflare ha ricostruito cdnjs sulla sua piattaforma per sviluppatori, con R2 come fonte di verità dei file pubblicati, KV per metadati, versioni e hash SRI e un Worker che serve le richieste, preservando contenuto dei pacchetti, URL e hash SRI. Il servizio dichiara circa 9 miliardi di richieste al giorno, quasi 108 000 richieste al secondo su oltre 330 data center e un tasso di successo della cache del 98,6 %. I tag script e link esistenti continuano a funzionare senza modifiche.
cdnjs, jsDelivr o unpkg: quale scegliere?
Se volete un catalogo di librerie curato e accettate di dipendere da un unico operatore molto grande, cdnjs è una scelta predefinita ragionevole. Se volete ridondanza tra fornitori e la garanzia che un file già servito continui a rispondere anche se il pacchetto viene ritirato da npm, il design multi-CDN e la conservazione permanente di jsDelivr sono più adatti. unpkg è la via più diretta verso qualsiasi pacchetto npm e la più semplice da capire, al prezzo di seguire più da vicino i cambiamenti di npm. Per la maggior parte dei siti in produzione, ospitare il file in proprio resta una risposta migliore di tutti e tre.
Mi serve ancora Subresource Integrity se mi fido del CDN?
Sì. Subresource Integrity non dice nulla della fiducia che riponete nelle intenzioni dell'operatore; è ciò che limita i danni se il file servito a quell'URL cambia, per qualsiasi motivo. Aggiungete un attributo integrity con l'hash atteso e crossorigin="anonymous", e il browser rifiuterà di eseguire un file che non corrisponde. Senza, una terza parte ha un diritto di esecuzione incondizionato su ogni pagina che porta il tag.



Qualunque sia la scelta, usate Subresource Integrity. Un attributo integrity insieme a crossorigin="anonymous" chiede al browser di rifiutare un file il cui hash non corrisponde, e fa tutta la differenza tra fidarsi di un URL e fidarsi di chi lo controlla. Senza, concedete a una terza parte un diritto di esecuzione incondizionato su ogni pagina del vostro sito. Il tag nella foto qui sopra non ha alcun attributo integrity, ed è la norma più che l'eccezione.