CDN erklärt: was ein Content Delivery Network macht | We.Inc
Wie ein CDN deine Dateien auf Edge-Server in der Nähe der Besucher kopiert, was ein Cache Hit und ein Cache Miss bedeuten und welche Cache-Control-Header festlegen, was die Edge behalten darf.
Ein Content Delivery Network ist ein Verbund von Servern rund um die Welt, die Kopien der Dateien deiner Website vorhalten. Besucher bekommen ihre Antwort von einem nahen Edge-Server statt von deinem Origin, sodass Seiten mit weniger Wartezeit laden und dein eigener Server weit weniger Anfragen bearbeitet. Cache-Control-Header legen fest, was die Edge speichern darf.
CDN-Begriffe in je einer Zeile
Begriff
Bedeutung
Origin
Dein eigener Server oder Speicher, auf dem die echten Dateien liegen
Edge
Ein CDN-Server nahe beim Besucher, der im Namen des Origin antwortet
Cache Hit
Die Edge hatte bereits eine frische Kopie und antwortete, ohne den Origin zu fragen
Cache Miss
Die Edge hatte nichts Brauchbares, holte die Datei vom Origin und speicherte sie eventuell
Purge
Das CDN anweisen, gespeicherte Kopien zu verwerfen, damit die nächste Anfrage neue holt
Entfernung kostet im Internet Zeit: Jede neue Verbindung braucht mehrere Round Trips, bevor das erste Byte ankommt. Ein CDN verkürzt diese Wege, indem es von einem Ort in der Nähe des Lesers antwortet. Diese Anleitung erklärt, wie das funktioniert, was ein CDN nicht kann und wie deine Header es steuern, mit einem Simulator zum Ausprobieren.
Wähle im Simulator Cache-Control-Direktiven, um zu sehen, ob ein Browser und eine CDN-Edge die Antwort speichern dürfen und wie lange.
Kopiere die resultierende Header-Zeile für deinen Server oder deine Hosting-Konfiguration.
Nutze die Referenztabelle, um sinnvolle Werte für HTML, gehashte Assets und private Seiten zu wählen.
Leere nach einem Deployment den CDN-Cache oder setze auf neue Dateinamen, damit Besucher das Update bekommen.
Gib Dateinamen einen Content-Hash, etwa app.3f9a1c.js, und cache sie mit immutable für ein Jahr. Ein neuer Build erzeugt neue Namen, daher wird nichts Veraltetes ausgeliefert.
Gib HTML eine kurze gemeinsame Lebensdauer oder lass es revalidieren, denn seine URL ändert sich zwischen Releases nie.
Lass ein CDN niemals Seiten speichern, die Kontodaten einer einzelnen Person zeigen. Markiere sie als private oder no-store.
Eine Bibliothek von einem öffentlichen CDN zu laden, spart keinen erneuten Download mehr: Browser partitionieren ihren Cache inzwischen aus Datenschutzgründen pro Website.
Häufige Fragen
Macht ein CDN jede Website schneller?
Meistens, für Besucher weit weg von deinem Server, weil die Round Trips kürzer sind und Verbindungen in der Nähe aufgebaut werden. Es kann Zeit kosten, wenn es eine zusätzliche Domain einführt, die aufgelöst und verbunden werden muss. Deshalb ist es besser, alles über deine eigene Domain durch das CDN auszuliefern, statt Hosts zu mischen.
Was ist s-maxage?
Eine Cache-Control-Direktive, die die Frische-Lebensdauer nur für gemeinsam genutzte Caches wie CDNs festlegt. Sie überschreibt max-age an der Edge, während Browser weiter max-age verwenden. So kannst du die Edge eine Seite eine Stunde lang behalten lassen und den Browser eine Minute.
Kann ein CDN dynamische Seiten cachen?
Ja, wenn die Antwort für alle gleich ist. Schon ein paar Sekunden Caching können eine Lastspitze abfangen. Antworten, die sich je nach angemeldetem Nutzer unterscheiden, dürfen nicht in einem gemeinsamen Cache gespeichert werden.
Ist ein CDN ein Sicherheitsrisiko?
Es ist eine weitere Partei auf dem Weg deiner Inhalte. Wenn du Skripte von einem fremden CDN lädst, füge einen Subresource-Integrity-Hash hinzu, damit der Browser eine veränderte Datei ablehnt.
Muss ich selbst ein CDN einrichten?
Viele Hosting-Plattformen liefern veröffentlichte Websites bereits über ein CDN aus. Lies die Dokumentation deines Hosts, bevor du ein zweites darüberlegst, denn zwei Caching-Schichten erschweren Purges und Fehlersuche.
Was bei einer Anfrage passiert
Der Resolver des Besuchers gibt die Adresse einer nahen Edge zurück. Die Edge sucht die URL in ihrem Speicher. Bei einem Hit antwortet sie sofort; bei einem Miss fragt sie deinen Origin, reicht die Antwort weiter und behält eine Kopie, wenn die Header es erlauben.
Edges halten außerdem warme Verbindungen zum Origin offen, daher ist selbst ein Miss oft schneller, als wenn sich ein Besucher vom anderen Ende der Welt mit deinem Server verbindet.
Was ein CDN nicht beheben kann
Langsame Datenbankabfragen, schweres JavaScript und übergroße Bilder bleiben langsam, auch wenn sie von einer Edge kommen. Ein CDN beseitigt Entfernung, keine Arbeit.
Es fügt außerdem eine weitere Fehlerquelle hinzu. Hat das CDN einen Ausfall, ist jede Website dahinter betroffen, daher lohnen sich Statusseiten und ein Plan für diesen Fall.
Cache-Control-Direktiven, die an der Edge zählen
Was jede Direktive Browsern und CDNs mitteilt
Direktive
Browser
CDN-Edge
max-age=N
Frisch für N Sekunden
Frisch für N Sekunden, außer s-maxage ist gesetzt
s-maxage=N
Ignoriert
Frisch für N Sekunden, überschreibt max-age
Darf speichern
Darf speichern, auch mit Authorization-Header
Darf speichern
Darf nicht speichern
Darf nicht speichern
Darf nicht speichern
Überspringt die Revalidierung, solange frisch
Überspringt die Revalidierung, solange frisch
stale-while-revalidate=N
Darf N Sekunden lang Veraltetes ausliefern, während aktualisiert wird
Dasselbe, sofern das CDN es unterstützt
Header-Rezepte nach Dateityp
Drei gängige Richtlinien
Gehashte Assets leben ein Jahr, HTML wird an der Edge jede Minute aufgefrischt, und Kontoseiten berühren nie einen gemeinsamen Cache.
Cache-Control-Simulator
Wähle Direktiven und sieh, wer die Antwort behalten darf.
max-age (Sekunden)
s-maxage (Sekunden, leer für keinen Wert)
Freigabe
Public, private oder no-store
immutable hinzufügen
Browser
CDN-Edge
Darf speichern, frisch für {n} Sekunden
Darf nicht speichern
Darf speichern, muss aber vor der Wiederverwendung beim Server nachfragen