Verwenden eines CDN zur Beschleunigung der Zustellung statischer Inhalte

Einführung

Moderne Websites und Anwendungen müssen Endbenutzern häufig eine erhebliche Menge statischer Inhalte bereitstellen. Dieser Inhalt enthält Bilder, Stylesheets, JavaScript und Video. Mit zunehmender Anzahl und Größe dieser statischen Assets nehmen die Bandbreitennutzung und die Ladezeiten der Seiten zu, was das Surferlebnis für Ihre Benutzer beeinträchtigt und die verfügbare Kapazität Ihrer Server verringert.

Um die Ladezeiten von Seiten drastisch zu verkürzen, die Leistung zu verbessern und die Kosten für Bandbreite und Infrastruktur zu senken, können Sie ein CDN oder ein Inhaltsverzeichnis implementieren, um diese Assets in einem Cache zu speichern Reihe von geografisch verteilten Servern.

In diesem Lernprogramm erhalten Sie einen umfassenden Überblick über CDNs und deren Funktionsweise sowie über die Vorteile, die sie für Ihre Webanwendungen bieten können.

Was ist ein CDN?

Ein Netzwerk zur Bereitstellung von Inhalten ist eine geografisch verteilte Gruppe von Servern, die für die Bereitstellung statischer Inhalte für Endbenutzer optimiert sind. Bei diesem statischen Inhalt kann es sich um nahezu jede Art von Daten handeln. CDNs werden jedoch am häufigsten zum Bereitstellen von Webseiten und zugehörigen Dateien, zum Streamen von Video und Audio sowie für große Softwarepakete verwendet.

image: http: //assets.digitalocean.com/articles/CDN/without-CDN.png [Diagramm der Inhaltslieferung ohne CDN]

Ein CDN besteht aus mehreren Points of Presence_ (PoPs) an verschiedenen Standorten, die jeweils aus mehreren edge Servern bestehen, die Assets von Ihrem origin- oder Hostserver zwischenspeichern. Wenn ein Benutzer Ihre Website besucht und statische Elemente wie Bilder oder JavaScript-Dateien anfordert, werden deren Anforderungen vom CDN an den nächsten Edgeserver weitergeleitet, von dem aus der Inhalt bereitgestellt wird. Wenn der Edgeserver nicht über die zwischengespeicherten Assets verfügt oder die zwischengespeicherten Assets abgelaufen sind, ruft das CDN die neueste Version entweder von einem anderen CDN-Edgeserver in der Nähe oder von Ihren Ursprungsservern ab und speichert sie im Cache. Verfügt die CDN-Kante über einen Cache-Eintrag für Ihre Assets (was die meiste Zeit der Fall ist, wenn Ihre Website nur mäßig frequentiert wird), wird die zwischengespeicherte Kopie an den Endbenutzer zurückgegeben.

image: http: //assets.digitalocean.com/articles/CDN/CDN.png [CDN-Diagramm (Content Delivery Network)]

Auf diese Weise können geografisch verteilte Benutzer die Anzahl der für den Empfang statischer Inhalte erforderlichen Sprünge minimieren und den Inhalt direkt aus dem Cache eines nahe gelegenen Rands abrufen. Das Ergebnis sind deutlich geringere Latenzen und Paketverluste, schnellere Seitenladezeiten und eine drastisch geringere Belastung Ihrer Ursprungsinfrastruktur.

CDN-Anbieter bieten häufig zusätzliche Funktionen an, z. B. DDoS Fälle gegen Aufpreis.

Wie funktioniert ein CDN?

Wenn ein Benutzer Ihre Website besucht, erhält er zuerst eine Antwort von einem DNS-Server mit der IP-Adresse Ihres Host-Webservers. Ihr Browser fordert dann den Webseiteninhalt an, der häufig aus einer Vielzahl statischer Dateien besteht, z. B. HTML-Seiten, CSS-Stylesheets, JavaScript-Code und Bilder.

Sobald Sie ein CDN ausrollen und diese statischen Assets auf CDN-Servern auslagern, indem Sie sie entweder manuell "herausschieben" oder das CDN die Assets automatisch "ziehen" lassen (beide Mechanismen werden in der https://www.digitalocean.com/ behandelt). community / tutorials / mit-einem-cdn-zur-beschleunigung-der-statischen-inhaltszustellung # push-vs-pull-zonen [nächster abschnitt]) weisen sie dann ihren webserver an, links zu statischen inhalten so umzuschreiben, dass diese Links verweisen jetzt auf Dateien, die vom CDN gehostet werden. Wenn Sie ein CMS wie WordPress verwenden, kann dieses Umschreiben von Links mithilfe eines Plugins eines Drittanbieters wie CDN Enabler implementiert werden.

Viele CDNs bieten Unterstützung für benutzerdefinierte Domänen, sodass Sie unter Ihrer Domäne einen CNAME-Eintrag erstellen können, der auf einen CDN-Endpunkt verweist. Sobald das CDN eine Benutzeranforderung an diesem Endpunkt (am Rand, viel näher am Benutzer als an Ihren Back-End-Servern) empfängt, leitet es die Anforderung an den dem Benutzer am nächsten gelegenen Point of Presence (PoP) weiter. Dieser PoP besteht häufig aus einem oder mehreren CDN-Edgeservern, die an einem Internet Exchange Point (IxP) zusammengestellt sind. Dabei handelt es sich im Wesentlichen um ein Rechenzentrum, über das Internet Service Provider (ISPs) ihre Netzwerke miteinander verbinden. Der interne Lastenausgleich des CDN leitet die Anforderung dann an einen Edgeserver an diesem PoP weiter, der den Inhalt für den Benutzer bereitstellt.

Die Caching-Mechanismen variieren je nach CDN-Anbieter, funktionieren jedoch im Allgemeinen wie folgt:

  1. Wenn das CDN eine erste Anforderung für ein statisches Asset empfängt, z. B. ein PNG-Image, wird das Asset nicht zwischengespeichert, und es muss eine Kopie des Assets entweder von einem nahe gelegenen CDN-Edgeserver oder vom Ursprungsserver selbst abgerufen werden. Dies wird als Cache-"Miss" bezeichnet und kann normalerweise durch Überprüfen des HTTP-Antwort-Headers erkannt werden, der "+ X-Cache: MISS +" enthält. Diese anfängliche Anforderung ist langsamer als zukünftige Anforderungen, da das Asset nach Abschluss dieser Anforderung am Rand zwischengespeichert wurde.

  2. Zukünftige Anforderungen für dieses Asset (Cache-Treffer), die an diesen Edge-Speicherort weitergeleitet werden, werden jetzt bis zum Ablauf aus dem Cache bereitgestellt (in der Regel über HTTP-Header festgelegt). Diese Antworten sind erheblich schneller als die ursprüngliche Anforderung, was die Wartezeiten für Benutzer drastisch verringert und den Webdatenverkehr auf das CDN-Netzwerk verlagert. Sie können überprüfen, ob die Antwort aus einem CDN-Cache geliefert wurde, indem Sie den HTTP-Antwortheader überprüfen, der jetzt "+ X-Cache: HIT +" enthalten sollte.

Weitere Informationen zur Funktionsweise und Implementierung eines bestimmten CDN finden Sie in der Dokumentation Ihres CDN-Anbieters.

Im nächsten Abschnitt werden die beiden gängigen CDN-Typen vorgestellt: * push * und * pull * CDNs.

Push vs. Zonen ziehen

Die meisten CDN-Anbieter bieten zwei Möglichkeiten zum Zwischenspeichern Ihrer Daten an: Pullzonen und Pushzonen.

  • Pull Zones * beinhalten die Eingabe der Adresse Ihres Ursprungsservers und das automatische Abrufen und Zwischenspeichern aller auf Ihrer Site verfügbaren statischen Ressourcen durch das CDN. Pullzonen werden häufig verwendet, um häufig aktualisierte, kleine bis mittelgroße Webressourcen wie HTML-, CSS- und JavaScript-Dateien bereitzustellen. Nachdem Sie dem CDN die Adresse Ihres Ursprungsservers mitgeteilt haben, müssen Sie die Links zu statischen Assets in der Regel so umschreiben, dass sie jetzt auf die vom CDN bereitgestellte URL verweisen. Ab diesem Zeitpunkt verarbeitet das CDN die eingehenden Asset-Anforderungen Ihrer Benutzer und stellt Inhalte aus den geografisch verteilten Caches und Ihrer Herkunft entsprechend bereit.

Um eine * Push-Zone * zu verwenden, laden Sie Ihre Daten in einen festgelegten Bucket oder Speicherort hoch, den das CDN dann in die Caches seiner verteilten Flotte von Edgeservern überträgt. Push-Zonen werden normalerweise für größere, sich selten ändernde Dateien verwendet, z. B. Archive, Softwarepakete, PDFs, Video- und Audiodateien.

Vorteile der Verwendung eines CDN

Nahezu jeder Standort kann von den Vorteilen der Einführung eines CDN profitieren. Die Hauptgründe für die Implementierung eines CDN sind jedoch die Verlagerung der Bandbreite von Ihren Ursprungsservern auf die CDN-Server und die Verringerung der Latenz für geografisch verteilte Benutzer.

Wir werden auf diese und einige der anderen Hauptvorteile eingehen, die sich durch die Verwendung eines CDN ergeben.

Origin-Abladung

Wenn Sie sich der Bandbreitenkapazität Ihrer Server nähern, können Sie durch das Auslagern statischer Elemente wie Bilder, Videos, CSS- und JavaScript-Dateien die Bandbreitennutzung Ihrer Server drastisch reduzieren. Content Delivery-Netzwerke sind für die Bereitstellung statischer Inhalte konzipiert und optimiert. Client-Anforderungen für diese Inhalte werden an Edge-CDN-Server weitergeleitet und von diesen bereitgestellt. Dies hat den zusätzlichen Vorteil, dass die Auslastung Ihrer Ursprungsserver verringert wird, da diese diese Daten dann mit einer viel geringeren Häufigkeit bereitstellen.

Geringere Latenz für eine verbesserte Benutzererfahrung

Wenn Ihre Benutzerbasis geografisch verteilt ist und ein nicht unbedeutender Teil Ihres Datenverkehrs aus einem entfernten geografischen Gebiet stammt, kann ein CDN die Latenz verringern, indem statische Assets auf Edgeservern näher an Ihren Benutzern zwischengespeichert werden. Indem Sie den Abstand zwischen Ihren Benutzern und statischen Inhalten verringern, können Sie Ihren Benutzern Inhalte schneller bereitstellen und deren Benutzererfahrung verbessern, indem Sie die Seitenladegeschwindigkeit erhöhen.

Diese Vorteile kommen bei Websites zum Tragen, die hauptsächlich bandbreitenintensive Videoinhalte bereitstellen. Dabei wirken sich hohe Latenzen und langsame Ladezeiten direkter auf das Benutzererlebnis und die Inhaltsbindung aus.

Verkehrsspitzen verwalten und Ausfallzeiten vermeiden

Mit CDNs können Sie große Datenverkehrsspitzen und -bursts verarbeiten, indem Sie Anforderungen für den Lastenausgleich über ein großes, verteiltes Netzwerk von Edgeservern verteilen. Durch das Auslagern und Zwischenspeichern statischer Inhalte in einem Bereitstellungsnetzwerk können Sie mit Ihrer vorhandenen Infrastruktur eine größere Anzahl gleichzeitiger Benutzer unterbringen.

Bei Websites, die einen einzelnen Ursprungsserver verwenden, können diese hohen Datenverkehrsspitzen das System häufig überlasten und zu ungeplanten Ausfällen und Ausfallzeiten führen. Durch die Verlagerung des Datenverkehrs auf eine hochverfügbare und redundante CDN-Infrastruktur, die für die Verarbeitung von unterschiedlichem Webdatenverkehr ausgelegt ist, kann die Verfügbarkeit Ihrer Assets und Inhalte erhöht werden.

Kosten reduzieren

Da die Bereitstellung statischer Inhalte in der Regel den größten Teil Ihrer Bandbreitennutzung ausmacht, können Sie Ihre monatlichen Infrastrukturausgaben drastisch reduzieren, indem Sie diese Assets in ein Netzwerk für die Bereitstellung von Inhalten verlagern. Ein CDN senkt nicht nur die Bandbreitenkosten, sondern kann auch die Serverkosten senken, indem die Auslastung der Ursprungsserver verringert wird, sodass Ihre vorhandene Infrastruktur skaliert werden kann. Schließlich bieten einige CDN-Anbieter monatliche Abrechnungen zum Festpreis an, sodass Sie Ihre variable monatliche Bandbreitennutzung in stabile, vorhersehbare wiederkehrende Ausgaben umwandeln können.

Erhöhen Sie die Sicherheit

Ein weiterer häufiger Anwendungsfall für CDNs ist die Abwehr von DDoS-Angriffen. Viele CDN-Anbieter bieten Funktionen zum Überwachen und Filtern von Anforderungen an Edgeserver. Diese Dienste analysieren den Webdatenverkehr auf verdächtige Muster, blockieren den Datenverkehr für böswillige Angriffe und lassen weiterhin seriösen Benutzerverkehr zu. CDN-Anbieter bieten in der Regel eine Vielzahl von DDoS-Abwehrdiensten an, von allgemeinem Angriffsschutz auf Infrastrukturebene (OSI Layer 3 und 4) bis hin zu mehr erweiterte Schadensbegrenzungsdienste und Ratenbegrenzung.

Darüber hinaus können Sie in den meisten CDNs Voll-SSL konfigurieren, sodass Sie den Datenverkehr zwischen dem CDN und dem Endbenutzer sowie den Datenverkehr zwischen dem CDN und Ihren Ursprungsservern mithilfe von vom CDN bereitgestellten oder benutzerdefinierten SSL-Zertifikaten verschlüsseln können.

Auswahl der besten Lösung

Wenn Ihr Engpass die CPU-Auslastung des Ursprungsservers und nicht die Bandbreite ist, ist ein CDN möglicherweise nicht die am besten geeignete Lösung. In diesem Fall kann das lokale Caching mit gängigen Caches wie NGINX oder Varnish die Auslastung erheblich verringern, indem Assets aus dem Systemspeicher bereitgestellt werden.

Vor der Einführung eines CDN können zusätzliche Optimierungsschritte - wie das Minimieren und Komprimieren von JavaScript- und CSS-Dateien sowie das Aktivieren der HTTP-Anforderungskomprimierung auf dem Webserver - ebenfalls erhebliche Auswirkungen auf die Ladezeiten der Seiten und die Bandbreitennutzung haben.

Ein hilfreiches Tool zum Messen und Verbessern der Seitenladegeschwindigkeit ist PageSpeed ​​Insights. Ein weiteres hilfreiches Tool, das eine Wasserfallaufschlüsselung der Anforderungs- und Antwortzeiten sowie Optimierungsvorschläge enthält, ist Pingdom.

Fazit

Ein Netzwerk zur Bereitstellung von Inhalten kann eine schnelle und effektive Lösung für die Verbesserung der Skalierbarkeit und Verfügbarkeit Ihrer Websites sein. Durch das Zwischenspeichern statischer Assets in einem geografisch verteilten Netzwerk optimierter Server können Sie die Ladezeiten und Latenzen von Seiten für Endbenutzer erheblich reduzieren. Darüber hinaus können Sie mit CDNs die Bandbreitennutzung erheblich reduzieren, indem Sie Benutzeranfragen entgegennehmen und am Rande aus dem Cache antworten, wodurch Sie die Kosten für Bandbreite und Infrastruktur senken.

Mit Plugins und Unterstützung von Drittanbietern für wichtige Frameworks wie WordPress, Drupal, Django und Ruby on Rails sowie zusätzlichen Funktionen wie DDoS-Schadensbegrenzung, vollständigem SSL, Benutzerüberwachung und Asset-Komprimierung können CDNs ein wirkungsvolles Tool zum Sichern von und sein Optimierung stark frequentierter Websites.