
cdnjs, jsDelivr oder unpkg: Was sie wirklich unterscheidet, seit der Browser-Cache partitioniert ist
- vuetelemetry
- Werkzeuge
- 8 Min. Lesezeit
Cloudflare hat cdnjs gerade auf seiner eigenen Entwicklerplattform neu gebaut, ohne eine einzige URL zu ändern. Ein guter Moment, die Wahl zwischen den drei öffentlichen JavaScript-CDNs neu zu prüfen, denn das Argument, mit dem die meisten Entwickler sie noch begründen, stimmt seit 2020 nicht mehr.
Eine Migration, die niemand bemerken sollte
Am 30. Juli 2026 veröffentlichte Cloudflare den Bericht über den Neubau von cdnjs, dem öffentlichen CDN, das es für JavaScript- und CSS-Bibliotheken betreibt, auf seiner eigenen Entwicklerplattform; InfoQ griff ihn am 14. August auf. Die Zahlen, die Cloudflare nennt, sollte man so stehen lassen, wie sie sind: cdnjs liefert rund 9 Milliarden Anfragen pro Tag aus, also etwa 108 000 Anfragen pro Sekunde über mehr als 330 Rechenzentren, mit einer Cache-Trefferquote von 98,6 %, und es wird von rund 12 % der Websites genutzt.
Darunter hat sich die Architektur geändert. R2 ist zur Quelle der Wahrheit für die veröffentlichten Dateien geworden, KV speichert Paket-Metadaten, Versionen und Subresource-Integrity-Hashes, und ein Worker beantwortet die Anfragen mit Workers Cache davor. Unverändert ist genau das, was für jeden zählt, der je ein Script-Tag in eine Seite kopiert hat: Laut Cloudflare blieben Paketinhalte, URLs und SRI-Hashes erhalten. Die Migration war darauf ausgelegt, unsichtbar zu sein.
Diese Unsichtbarkeit ist das eigentliche Produkt. Ein öffentliches CDN gibt nur ein Versprechen, das zählt: dass die URL, die Sie vor fünf Jahren in Ihren <head> kopiert haben, heute noch dieselben Bytes liefert. Alles andere, die Zahl der Standorte, die Cache-Quote, die Laufzeitumgebung darunter, ist Implementierungsdetail. Man beurteilt diese Dienste danach, ob sie darunter alles ändern können, ohne an dem etwas zu ändern, wovon Sie abhängen.
Drei CDNs, drei verschiedene Versprechen

Die drei üblichen Kandidaten sind nicht gleicher Art, und sie zu verwechseln ist der häufigste Fehler. cdnjs liefert einen kuratierten Bibliothekskatalog: Ein menschlicher Prozess entscheidet, was aufgenommen wird. jsDelivr liefert npm-Pakete, GitHub-Repositories und ESM-Builds und arbeitet als Multi-CDN, das Anfragen auf Cloudflare und Fastly verteilt. unpkg ist der einfachste der drei: ein direkter Spiegel von npm, bei dem alles Veröffentlichte sofort per URL erreichbar ist.
Das Argument, das 2020 aufhörte zu stimmen
Nun zu dem Argument, von dem man sich verabschieden muss. Jahrelang war die Standardbegründung für ein öffentliches CDN der gemeinsame Cache: Nutzen Sie das CDN, das alle nutzen, dann hat Ihr Besucher jQuery schon von einer anderen Website im Cache, und es kostet nichts. Das stimmt seit Langem nicht mehr. Browser partitionieren den HTTP-Cache inzwischen nach besuchter Website, Safari seit 2013, Chrome seit Version 86 im Jahr 2020, Firefox seit Version 85 im Jahr 2021.
- cdnjs: kuratierter Katalog, betrieben von Cloudflare; der Neubau von 2026 hat URLs, Paketinhalte und SRI-Hashes erhalten
- jsDelivr: npm, GitHub und ESM; Multi-CDN über Cloudflare und Fastly; bereits ausgelieferte Dateien bleiben erhalten, auch wenn das Paket verschwindet
- unpkg: ein direkter npm-Spiegel, der einfachste der drei und am stärksten Änderungen vorgelagerter Pakete ausgesetzt
- Einen websiteübergreifenden Cache gibt es nicht mehr: Safari 2013, Chrome 86 im Jahr 2020, Firefox 85 im Jahr 2021; das historische Argument für öffentliche CDNs ist hinfällig
- Setzen Sie bei Drittanbieter-Tags immer integrity und crossorigin; mit einem modernen Bundler ist Selbsthosten oft schneller und sicherer als alle drei
Diese Partitionierung bedeutet, dass eine Datei, die auf Website A geladen wurde, auf Website B erneut geladen wird, auch bei identischer URL auf identischem CDN. Die Änderung erfolgte aus Datenschutzgründen: Ein gemeinsamer Cache verrät den Browserverlauf, weil eine Website eine Anfrage zeitlich messen und daraus schließen kann, ob Sie anderswo waren. Der Leistungsgewinn war real, er wurde bewusst aufgegeben, und jeder Rat, der sich noch darauf stützt, beschreibt das Web vor 2020.
Was sie heute wirklich unterscheidet
Ohne dieses Argument wird der Vergleich enger und ehrlicher. Es bleiben Verfügbarkeit, Unveränderlichkeit und die Menge an Drittanbieter-Oberfläche, die Sie an Ihre Seite hängen wollen. Zur Unveränderlichkeit gibt jsDelivr an, dass eine einmal ausgelieferte Datei dauerhaft gespeichert wird: Ein aus npm entferntes Paket antwortet also weiter, statt die Websites zu brechen, die es referenzierten. unpkg folgt als Spiegel npm enger. Wer sich an das Verschwinden von left-pad aus npm im Jahr 2016 erinnert, weiß, dass das kein Lehrbuchfall ist.
Bei der Verfügbarkeit sorgt das Multi-CDN-Design von jsDelivr dafür, dass ein Anbieter in Schwierigkeiten den Dienst nicht mitreißt. cdnjs hängt ganz an Cloudflare, und die Migration von 2026 hat es einheitlicher gemacht, nicht redundanter. Das ist eine Abwägung, kein Mangel: ein sehr großer einzelner Betreiber mit mehr als 330 Standorten gegen mehrere Betreiber mit unabhängigen Ausfallarten. Wählen Sie den Ausfall, den Sie lieber erklären.
Integrity ist nicht optional
Was immer Sie wählen, verwenden Sie Subresource Integrity. Ein integrity-Attribut zusammen mit crossorigin="anonymous" weist den Browser an, eine Datei abzulehnen, deren Hash nicht passt, und das macht den ganzen Unterschied zwischen dem Vertrauen in eine URL und dem Vertrauen in den, der sie kontrolliert. Ohne es gewähren Sie einem Dritten ein bedingungsloses Ausführungsrecht auf jeder Seite Ihrer Website. Das Tag auf dem Foto oben trägt kein integrity-Attribut, und das ist eher die Regel als die Ausnahme.
Die Option, die die meisten Vergleiche auslassen
Bleibt die Option, die die meisten Vergleiche auslassen: gar kein öffentliches CDN zu nutzen. Liefern Sie die Bibliotheksdatei von Ihrem eigenen Ursprung aus, zusammen mit Ihren übrigen Assets. Da der Cache partitioniert ist, gewannen Sie durch den gemeinsamen Cache ohnehin nichts, und das Selbsthosten spart eine DNS-Auflösung, einen TLS-Handshake und eine Verbindung zu einem Host, den Sie nicht kontrollieren. Ihr Bundler erledigt das bereits. Für die meisten Websites ist das 2026 zugleich die schnellste und die sicherste Wahl.
Eine letzte Ehrlichkeit über alle drei: Sie werden nach bestem Bemühen betrieben, ohne vertragliche Verfügbarkeitszusage. Es sind großzügige öffentliche Infrastrukturen, kein Dienst, auf den Sie Anspruch haben. Wenn Ihre Seite unbenutzbar wird, sobald eine Bibliothek nicht lädt, gehört diese Abhängigkeit nicht auf das kostenlose Angebot eines Dritten, egal wie viele Rechenzentren er hat.
FAQ
Beschleunigt ein öffentliches CDN meine Website noch, weil die Datei schon von einer anderen Website im Cache liegt?
Nein. Browser partitionieren den HTTP-Cache nach besuchter Website: Eine Datei, die auf einer Website geladen wurde, wird auf einer anderen erneut geladen, selbst bei identischer URL und identischem CDN. Safari partitioniert seit 2013, Chrome seit Version 86 im Jahr 2020 und Firefox seit Version 85 im Jahr 2021. Die Änderung erfolgte aus Datenschutzgründen, denn ein gemeinsamer Cache erlaubt einer Website, durch Zeitmessung einer Anfrage abzuleiten, welche anderen Websites Sie besucht haben. Jeder Rat, der sich noch auf den gemeinsamen Cache stützt, beschreibt das Web vor 2020.
Hat die cdnjs-Migration von 2026 bestehende URLs gebrochen?
Nein. Cloudflare hat cdnjs auf seiner Entwicklerplattform neu gebaut, mit R2 als Quelle der Wahrheit für veröffentlichte Dateien, KV für Metadaten, Versionen und SRI-Hashes und einem Worker, der die Anfragen beantwortet, und dabei Paketinhalte, URLs und SRI-Hashes erhalten. Der Dienst nennt rund 9 Milliarden Anfragen pro Tag, etwa 108 000 Anfragen pro Sekunde über mehr als 330 Rechenzentren und eine Cache-Trefferquote von 98,6 %. Bestehende Script- und Link-Tags funktionieren ohne Änderung weiter.
cdnjs, jsDelivr oder unpkg: Welches soll ich wählen?
Wenn Sie einen kuratierten Bibliothekskatalog wollen und es akzeptieren, von einem sehr großen einzelnen Betreiber abzuhängen, ist cdnjs eine vernünftige Standardwahl. Wenn Sie Redundanz zwischen Anbietern wollen und die Zusage, dass eine bereits ausgelieferte Datei weiter antwortet, auch wenn das Paket aus npm entfernt wird, passen das Multi-CDN-Design und die dauerhafte Speicherung von jsDelivr besser. unpkg ist der direkteste Weg zu jedem npm-Paket und am einfachsten zu durchschauen, um den Preis, npm-Änderungen enger zu folgen. Für die meisten produktiven Websites ist das Selbsthosten der Datei die bessere Antwort als alle drei.
Brauche ich Subresource Integrity noch, wenn ich dem CDN vertraue?
Ja. Subresource Integrity sagt nichts darüber aus, wie sehr Sie den Absichten des Betreibers vertrauen; es begrenzt den Schaden, falls sich die unter dieser URL ausgelieferte Datei aus irgendeinem Grund ändert. Fügen Sie ein integrity-Attribut mit dem erwarteten Hash und crossorigin="anonymous" hinzu, und der Browser verweigert die Ausführung einer Datei, die nicht passt. Ohne es hat ein Dritter ein bedingungsloses Ausführungsrecht auf jeder Seite, die das Tag trägt.



Was immer Sie wählen, verwenden Sie Subresource Integrity. Ein integrity-Attribut zusammen mit crossorigin="anonymous" weist den Browser an, eine Datei abzulehnen, deren Hash nicht passt, und das macht den ganzen Unterschied zwischen dem Vertrauen in eine URL und dem Vertrauen in den, der sie kontrolliert. Ohne es gewähren Sie einem Dritten ein bedingungsloses Ausführungsrecht auf jeder Seite Ihrer Website. Das Tag auf dem Foto oben trägt kein integrity-Attribut, und das ist eher die Regel als die Ausnahme.