CDN-Performance

Ein wichtiger Vorteil eines CDN ist seine Fähigkeit, Inhalte schnell und effizient bereitzustellen. Performanceoptimierungen durch ein CDN lassen sich in drei Kategorien unterteilen. Schauen Sie sich im CDN-Leitfaden um.

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Verstehen, wie ein CDN Ladezeiten verbessert
  • Die Arbeit mit und ohne CDN vergleichen
  • Die Grundlagen des CDN-Caching kennenlernen
  • Erfahren, wie bei einem CDN Dateien verkleinert werden

Link zum Artikel kopieren

Wie verbessert ein CDN die Ladezeiten?

Praktisch jeder, der im Internet aktiv ist, hat schon die Vorteile eines Content Distribution Network (CDN) erlebt. Die meisten Technologieunternehmen, darunter auch Unternehmen wie Google, Apple und Microsoft, verwenden CDNs zur Verringerung der Latenz beim Laden von Webseiteninhalten.


Bei einem CDN werden normalerweise an den Übergängen zwischen verschiedenen Netzwerken Server platziert. Diese Internet Exchange Points (IXPs) sind die wichtigsten Verbindungspunkte zwischen verschiedenen Internetprovidern, die sich dort gegenseitig Zugriff auf Ressourcen in ihren jeweiligen Netzwerken ermöglichen. Neben den IXPs werden für ein CDN Server in Rechenzentren an Standorten auf der ganzen Welt platziert, normalerweise in Bereichen mit hohem Traffic und an strategischen Positionen, damit der Traffic so schnell wie möglich übertragen werden kann.


Ein wichtiger Vorteil eines CDN ist seine Fähigkeit, Inhalte schnell und effizient bereitzustellen. Die Performanceoptimierungen durch ein CDN lassen sich in drei Kategorien unterteilen:

  1. Entfernungen reduzieren – hierbei geht es darum, die physische Entfernung zwischen einem Client und den angefragten Daten zu verringern
  2. Hardware-/Softwareoptimierungen – hierbei geht es um die Verbesserung der Performance serverseitiger Infrastruktur z. B. durch SSD-Laufwerke und effizientes Load Balancing
  3. Reduzierte Datenübertragung – hier werden Techniken zur Verringerung der Dateigröße eingesetzt, damit eine Seite zu Beginn schnell geladen werden kann

Um die Vorteile eines CDN zu verstehen, wollen wir uns ansehen, wie eine normale Client/Server-Datenübertragung ohne CDN abläuft.

Wie unterscheiden sich die Ladezeiten mit und ohne CDN?

Stellen wir uns vor, jemand in New York muss eine Website aufrufen, die auf einem Server in Singapur gehostet wird. Der Abstand zwischen diesen Orten ist mit einer physischen Entfernung von ca. 15.300 km beträchtlich.

Entfernung ohne CDN

Wenn ein Server, auf dem die Website-Inhalte gehostet werden, (der Ursprungsserver) in Singapur steht, muss jede Anfrage für jedes Element einer Webseite von New York nach Singapur und wieder zurück reisen. Ähnlich wie bei einem internationalen Flug mit vielen Zwischenstationen muss jede Anfrage auf ihrer Fernreise von Punkt A nach Punkt B über eine Reihe von Routern laufen.


Wenn Sie sich einmal ein echtes Beispiel dafür ansehen möchten, wie viele verschiedene Verbindungen (Hops) Ihr Computer benötigt, um von Ihrem aktuellen Standort einen bestimmten Webdienst zu erreichen, dann probieren Sie doch einmal auf einem Desktopcomputer das Dienstprogramm Traceroute aus.

CDN – Verbesserte Transitzeit

Da die Anfrage von New York nach Singapur jeden Router-Standort auf dem Weg durchlaufen muss, erhöht sich die Zeit (Latenz) sowohl aufgrund der Gesamtentfernung als auch durch die Zeit, die jeder Router für die Verarbeitung der Anfrage braucht. Wenn der Ursprungsserver die Anfrage verarbeitet und dem Client antwortet, der die Anfrage stellt, sendet er Informationen über eine ähnliche Abfolge von Routern zurück, bis die Antwort wieder in New York ankommt. Die gesamte gemessene Zeit für Hin- und Rücklauf wird in der Telekommunikation als RTT (round trip time, „Umlaufzeit“) bezeichnet. Wir wollen einmal ein Beispiel für die Latenzfaktoren durchgehen, ohne dabei die verfügbare Bandbreite und mögliche Engpässe im Netzwerk zu berücksichtigen.


Zur Veranschaulichung treffen wir folgende Annahmen:

  • Eine Anfrage braucht 250 ms von New York nach Singapur.
  • Für den Aufbau einer TCP/IP-Verbindung kommen 3 Instanzen mit jeweils 250 ms Latenz hinzu.
  • Für die Webseite werden 5 einzigartige Elemente benötigt, darunter Bilder, JavaScript-Dateien und die Webseite selbst.

Schauen wir uns an, wie lange es ungefähr dauert, diese Webseite zu laden:

  • 750 ms: Die TCP/IP-Verbindung zwischen dem Client in New York und dem Ursprungsserver in Singapur wird aufgebaut.
  • 250 ms: Die HTTP-Anfrage nach der Webseite wird von New York nach Singapur übertragen.
  • 250 ms: Die anfordernde Stelle in New York erhält vom Ursprungsserver in Singapur eine Antwort mit dem Statuscode „200“, der Webseite und den Angaben zu allen erforderlichen zusätzlichen Assets.
  • 250 ms: Der Client in New York fordert alle 5 Assets an.
  • 1500 ms: Die fünf Assets werden vom Ursprungsserver in Singapur asynchron an den Client übermittelt.

In diesem einfachen Beispiel beträgt die Gesamttransitzeit für das Laden dieser Webseite ca. 3000 ms.


Wie Sie sehen, wird bei jeder Anfrage und jeder Antwort der gesamte Pfad zwischen dem Client in New York und dem Ursprungsserver in Singapur durchlaufen. Bei größeren Websites mit noch mehr Assets nimmt die Latenz zwischen Punkt A und Punkt B weiter zu.


Kommen wir noch einmal auf das Beispiel zurück, dass Inhalte in Singapur gehostet und für einen Webclient in New York bereitgestellt werden. Aber diesmal wird für die Website in Singapur ein CDN mit einem Server in Atlanta verwendet, auf dem eine zwischengespeicherte Kopie der statischen Website liegt:

  • Eine Anfrage braucht 50 ms von New York nach Atlanta.
  • Für den Aufbau einer TCP/IP-Verbindung kommen 3 Instanzen mit jeweils 50 ms Latenz hinzu
  • Für die Webseite werden 5 einzigartige Elemente benötigt, darunter Bilder, JavaScript-Dateien und die Webseite selbst.

Schauen wir uns an, wie lange es mit dem CDN ungefähr dauert, diese Webseite zu laden:

  • 150 ms: Die TCP/IP-Verbindung zwischen dem Client in New York und dem Edge-Server in Atlanta wird aufgebaut.
  • 50 ms: Die HTTP-GET-Anfrage nach der Webseite wird vom Client zum Edge-Server übertragen.
  • 50 ms: Der Client erhält vom Cache des Edge-Servers eine Antwort mit der Webseite und einer Liste aller erforderlichen zusätzlichen Assets.
  • 50 ms: Der Client in New York fordert alle 5 Assets an.
  • 800 ms: Die fünf Assets werden vom Edge-Server asynchron an den Client übermittelt.

Die Gesamttransitzeit für das Laden dieser Webseite beträgt ca. 1100 ms.

CDN – optimierte Entfernung

In diesem Beispiel führt die Verringerung des Abstands zwischen Client und Inhalt dazu, dass die Latenz für statische Inhalte um 1900 ms besser wird. Die Ladezeit verkürzt sich also um fast 2 Sekunden.

CDN – verbesserte Latenz

Durch die Reduzierung der Gesamtentfernung, die der ganze notwendige Traffic durchlaufen muss, spart jeder Benutzer der Website eine Menge Ladezeit. Da Websitebesucher bei zunehmenden Wartezeiten immer schneller abwandern (Bounce), kann man hierdurch die Erfahrungen für Benutzer verbessern und die Verweilzeiten auf der Seite verlängern.

Wie werden bei einem CDN Inhalte geladen? Was ist Caching?

Wenn ein Client eine Datei von einem Ursprungsserver anfordert, muss die entsprechende Anfrage zu diesem Server und wieder zurück befördert werden, wie schon beschrieben. Durch ein CDN kann die Latenz verbessert werden. Dazu werden die Dateien mit statischen Inhalten vom Ursprungsserver in das verteilte CDN-Netzwerk verschoben. Diesen Vorgang nennt man Caching. Einige CDNs bieten weitere Features, durch die auch dynamische Inhalte selektiv zwischengespeichert werden können. Das CDN stellt solche im Cache liegenden Inhalte dann vom nächstgelegenen CDN-Rechenzentrum aus für den Client bereit.

Anfrage ohne CDN-Caching
Anfrage mit CDN-Caching

Nach einem TCP-Handshake sendet der Clientcomputer eine HTTP-Anfrage an das CDN-Netzwerk. Wenn die Inhalte noch nicht im Cache zwischengespeichert wurden, lädt das CDN die Inhalte zunächst vom Ursprungsserver herunter. Dazu wird eine zusätzliche Anfrage zwischen dem Ursprungsserver und dem Edge-Server des CDN gestellt.


CDN-Caching erfolgt typischerweise in diesen vier Schritten:

  1. Wenn der Nutzer eine Webseite anfordert, wird die Anfrage des Nutzers zum nächstgelegenen Edge-Server des CDN geroutet.
  2. Der Edge-Server fordert dann beim Ursprungsserver die vom Benutzer angeforderten Inhalte an.
  3. Der Ursprungsserver beantwortet die Anfrage des Edge-Servers.
  4. Schließlich antwortet der Edge-Server dem Client.
CDN-Caching-Anfrage

Der Nutzen durch die Nähe eines CDN zum Client tritt dann ein, wenn die gleiche Anfrage an den Ursprungsserver schon einmal erfolgt ist. Sobald die Daten des Ursprungsservers im Cache des CDN-Netzwerks liegen, muss jede nachfolgende Anfrage eines Clients nur bis zum nächsten Edge-Server gehen. Dadurch wird die Latenz verringert und die Inhalte können viel schneller bereitgestellt werden, sofern der nächste Edge-Server näher liegt als der Ursprungsserver.

gecachte CDN-Edge-Antwort

Denken Sie daran, dass die Zeit für das Herunterladen von Assets und zum Verarbeiten von Anfragen und Antworten hierbei noch nicht berücksichtigt ist. Bisher ist nur die Transitzeit zum Übertragen von Daten zwischen diesen beiden Standorten eingerechnet. Wir werden noch weitere wichtige Latenzfaktoren untersuchen, nämlich Datenreduzierung, Festplattengeschwindigkeit und Netzwerküberlastung.

Wie verringert ein CDN die Größe von Dateien, um die Geschwindigkeit zu erhöhen?

Um die Seitenladedauer zu verkürzen, reduzieren CDNs die Gesamtmenge der Daten, die zwischen den Cache-Servern des CDN und dem Client übertragen werden. Bei geringerer insgesamt übertragener Datenmenge nimmt die Latenz ab und man braucht weniger Bandbreite. Dadurch werden Seiten schneller geladen und die Kosten für Bandbreite sinken. Für die Reduzierung der Datenmenge gibt es zwei entscheidende Komponenten:


Minifikation – Beim Vorgang der Minifikation werden Codeblöcke dadurch verkleinert, dass alle Bestandteile entfernt werden, die für Menschen wichtig sind, um den Code nachvollziehen zu können. Ein Entwickler muss seine Ideen in sinnvolle Variablennamen, Leerräume und Kommentare gliedern, damit die Codeblöcke lesbar und wartbar sind. Aber Computer können diesen Code auch dann ausführen, wenn diese Zeichen entfernt werden.

Hier als Beispiel ein Codeblock vor und nach der Minifikation:

Vor der Minifikation: acht Codezeilen

CDN ohne Minifikation

Nach der Minifikation: nur noch eine Zeile Code

CDN-Minifikation

Durch die Verkleinerung des Codeschnipsels von acht auf eine Zeile wird auch die Gesamtdatei kleiner, und damit nimmt die Übertragung der Datei weniger Zeit in Anspruch. Die Latenz nimmt ab und Inhalte werden schneller geladen.


Dateikomprimierung – Dateikomprimierung ist ein wesentlicher Faktor für weniger Latenz und Bandbreitenverbrauch beim Übertragen von Daten über das Internet. GZip ist eine gängige Kompressionsmethode und gilt als bewährtes Verfahren für die Übertragung von Webseiten. Bei vielen CDN-Providern ist GZip standardmäßig aktiviert. Wie hoch sind die Einsparungen durch GZip-Komprimierung? In der Regel werden Dateien dadurch um etwa 50 bis 70 % der ursprünglichen Dateigröße verkleinert.

Mit welcher Hardware kann ein CDN die Geschwindigkeit steigern?

Bei der Optimierung der CDN-Hardware bringt der Einsatz von SSD-Laufwerken (Solid State Drives) gegenüber herkömmlichen Festplatten (HDD) große Vorteile. Auf SSD-Laufwerken können Dateien bis zu 30 % schneller geöffnet werden als auf herkömmlichen Festplatten. Außerdem sind sie widerstandsfähiger und zuverlässiger.


Ähnlich wie ein Plattenspieler besteht ein herkömmliches Festplattenlaufwerk aus einer rotierenden kreisförmigen Metallscheibe mit einer Magnetbeschichtung, auf der die Daten gespeichert werden. Ein Lese-/Schreibkopf an einem Arm greift auf Informationen zu, wenn sich die Scheibe darunter dreht. Dieser Vorgang ist mechanisch und wird von der Drehgeschwindigkeit der Scheibe beeinflusst. Seit dem Aufkommen von SSDs werden die älteren Festplattenmodelle seltener verwendet, obwohl sie noch heute hergestellt werden und in vielen Computersystemen weit verbreitet sind.


Auch SSD-Laufwerke sind nichtflüchtige Speicher, funktionieren jedoch eher wie USB-Sticks oder Speicherkarten, die häufig in Geräten wie Digitalkameras verwendet werden. Es gibt keine beweglichen Teile. Wenn sich eine normale Festplatte dreht und das System einen Stoß bekommt, kann die Festplatte „springen“, was zu Lese-/Schreibfehlern und gegebenenfalls zu Ausfallzeiten führt. Ein weiterer wichtiger Vorteil bei SSDs liegt im Zugriff auf fragmentierte Dateien. Bei der Dateifragmentierung befinden sich Teile einer Datei an verschiedenen Stellen auf der Festplatte, was den Zugriff bei Festplattenlaufwerken verlangsamt. Bei einer SSD hingegen kann man effizient auch auf nicht zusammenhängende Speicherorte zugreifen, die Fragmentierung beeinträchtigt also nicht die Performance.


Bei den ersten CDNs wurden die Daten auf Festplatten gespeichert. Bei einigen CDN-Diensten können heute alle Caches am Netzwerkrand auf SSD-Laufwerken liegen. Der Nachteil von SSDs sind ihre Kosten: Eine SSD kann bis zu fünfmal teurer sein als herkömmliche Medien. Deshalb werden SSDs bei einigen CDN-Diensten oft noch vermieden und die ältere Technologie wird eingesetzt. Das Cloudflare CDN arbeitet ausschließlich mit SSDs.