Was sind CDNs?
CDNs sind im Wesentlichen global verteilte Caches — Datenspeicher und Übergabepunkte, die näher an den Besuchern deiner Website liegen. Auch wenn sich dein Server in den USA befindet, ist es sinnvoll, dass deine Inhalte irgendwo im Südpazifik bereit stehen, wenn sich eine beträchtliche Anzahl deiner Benutzer in Australien befindet. Dies wird durch die Verwendung von „Edge-Servern“ erreicht, die statische Inhalte wie Bilder, JavaScript-Dateien und HTML an deine Benutzer ausliefern. Wenn ein anderer User in Buenos Aires ist, solltest du natürlich auch einen Edge-Server in Südamerika anbieten. Es gibt kein Begrenzung, wie viele Edge-Server du haben kannst.
Vorteile von verteilten Caches:
- Geringere Belastung des Ursprungsservers, der nur für dynamisch generierte Inhalte herangezogen werden muss.
- Massiv verbesserte Leistung, da die Entfernung zwischen deinem Benutzer und deinem Inhalt verringert wird und der Inhalt durch weniger Engpässe geleitet wird. Dies sorgt für ein besseres Benutzererlebnis und eine höhere Konversionsrate.
- Das Caching wird für dich übernommen, wenn du einen kommerziellen CDN-Provider benutzt. Verabschiede dich von den Schwierigkeiten bei der Konfiguration und Wartung von Varnish.
- CDN-Anbieter können dich vor DDoS-Angriffen schützen.
Eine der größten Herausforderungen bei der Verwendung von CDNs ist es, sicherzustellen, dass die Inhalte nicht veraltet sind, und gleichzeitig unnötige Routing-Anfragen an den Ursprungsserver zu vermeiden. Im Großen und Ganzen gibt es dafür zwei Ansätze: Pull und Push. Beim „Pulling“ kann das CDN jede Ressource, die es noch nicht hat, vom Ursprungsserver anfordern, sie dann für zukünftige Referenzen speichern und die gecachte Ressource als Antwort auf identische Anfragen in der Zukunft bereitstellen. Oder du kannst Anfragen zuvorkommen, indem du deinen Inhalt aktiv auf den Server „schiebst“, bevor diese spezifische Ressource angefordert wurde.
Im Großen und Ganzen eignet sich Pulling für Situationen, in denen sich der Inhalt regelmäßig ändert, Push, in denen der Inhalt weitgehend statisch ist.
Eine damit verbundene Herausforderung ist die „Cache-Invalidierung“, bei der definiert (oder geplant) wird, wann Inhalte in den verteilten Caches veraltet sein könnten, und die eine Aktualisierung oder Notwendigkeit zur Auffrischung signalisiert. Dadurch wird sichergestellt, dass die auf dem CDN-Server verfügbaren Ressourcen mit dem Ursprungsserver synchronisiert sind.
Wenn du dich für ein kommerzielles Software-as-a-Service-CDN entscheidest, dann solltest du dich um all dies nicht groß kümmern müssen — je nachdem, wie konfigurierbar dein Provider ist.