[ĐĐ”] verwenden Sie CDN

In fast nahezu jedem Artikel oder Tool zur Optimierung der Ladegeschwindigkeit von Websites findet sich der bescheidene Hinweis «Verwenden Sie ein CDN». CDN steht fĂŒr Content Delivery Network oder Netzwerk zur Bereitstellung von Inhalten. Bei der Firma „Method Lab“ erhalten wir hĂ€ufig Anfragen von Kunden zu diesem Thema, und einige aktivieren selbst ein CDN. Ziel dieses Artikels ist es, herauszufinden, welche Vorteile ein CDN in Bezug auf die Ladegeschwindigkeit einer Website bietet, welche Probleme auftreten können und in welchen FĂ€llen die Nutzung eines CDN gerechtfertigt ist.

[ĐĐ”] verwenden Sie CDN

Die in der Abbildung hervorgehobenen Verzögerungen sind durch die Verwendung eines CDN verursacht.

Ein wenig Geschichte

Wie viele Technologien entstanden auch CDNs aus Notwendigkeit. Mit dem Wachstum der Internetverbindungen der Nutzer tauchten Online-Video-Dienste auf. Es ist selbstverstÀndlich, dass Videoinhalte deutlich mehr Bandbreite erfordern als herkömmliche Inhalte auf Websites (Bilder, Texte und CSS- oder JS-Code).

Bei dem Versuch, einen Video-Stream parallel an viele Kunden von einem Server aus zu ĂŒbertragen, wird wahrscheinlich die Internetverbindung des Servers zum Engpass. In der Regel reichen bereits einige Tausend Streams aus, um die typische Serververbindung zu ĂŒberlasten. NatĂŒrlich können auch andere RessourcenbeschrĂ€nkungen eine Rolle spielen, aber die sind derzeit nicht von Belang. Zudem ist es wichtig zu beachten, dass die Erweiterung des Serverkanals zu kostspielig (und manchmal unmöglich) ist und oft auch nicht sinnvoll. Die Belastung des Kanals wĂ€hrend der Übertragungen wird zyklisch erfolgen.

Das Problem der Bandbreitenbegrenzung eines einzelnen Servers wird hervorragend durch ein CDN gelöst. Kunden verbinden sich nicht direkt mit dem Server, sondern mit Knoten im CDN-Netzwerk. Im Idealfall gibt der Server einen Stream an den CDN-Knoten weiter, und das Netzwerk nutzt dann eigene Ressourcen, um diesen Stream an viele Benutzer zu liefern. Aus wirtschaftlicher Sicht zahlen wir nur fĂŒr tatsĂ€chlich genutzte Ressourcen (das kann Bandbreite oder Traffic sein) und profitieren von exzellenter Skalierbarkeit unseres Services. Der Einsatz eines CDNs zur Auslieferung von schwerem Content ist völlig gerechtfertigt und sinnvoll. Es ist jedoch anzumerken, dass die grĂ¶ĂŸten Akteure in diesem Bereich (zum Beispiel Netflix) ihre eigenen CDNs aufbauen, anstatt große kommerzielle CDNs (Akamai, Cloudflare, Fastly usw.) zu nutzen.

Mit der Weiterentwicklung des Webs sind auch die Webanwendungen komplexer und schwerer geworden. Ein zentrales Problem ist die Ladegeschwindigkeit. Geschwindigkeitsenthusiasten haben recht schnell mehrere grundlegende Probleme identifiziert, die zu langsamen Ladezeiten fĂŒhren. Eines dieser Probleme sind Netzwerkverzögerungen (RTT – Round Trip Time oder Ping-Zeit). Verzögerungen wirken sich auf viele Prozesse beim Laden der Webseite aus: die Einrichtung der TCP-Verbindung, den Start der TLS-Sitzung und das Laden jeder einzelnen Ressource (Bilder, JS-Dateien, HTML-Dokumente usw.).

Das Problem wurde verschĂ€rft durch die Nutzung des Protokolls HTTP/1.1 (bis zur EinfĂŒhrung von SPDY, QUIC und HTTP/2 die einzige Option), bei dem Browser nicht mehr als 6 TCP-Verbindungen zu einem Host öffnen. All dies fĂŒhrte zu Leerlaufzeiten der Verbindungen und einer ineffizienten Nutzung der Bandbreite. Teilweise wurde das Problem durch Domain-Sharding gelöst – der Erstellung zusĂ€tzlicher Hosts, um das Limit der Verbindungen zu ĂŒberwinden.

Hier kommt die zweite FĂ€higkeit des CDN ins Spiel – die Reduzierung der Latenzen (RTT) durch die Vielzahl an Knotenpunkten und deren NĂ€he zum Benutzer. Die Entfernung spielt hierbei eine entscheidende Rolle: Die Lichtgeschwindigkeit ist begrenzt (ca. 200.000 km/s in Glasfaser). Das bedeutet, dass jede 1.000 km Strecke 5 ms Latenz oder 10 ms in der RTT hinzufĂŒgt. Dies sind die minimalen Zeitverluste fĂŒr die Übertragung, da noch zusĂ€tzliche Verzögerungen durch ZwischengerĂ€te auftreten. Da CDNs in der Regel in der Lage sind, Objekte auf ihren Servern zwischenzuspeichern, können wir von der Bereitstellung solcher Objekte ĂŒber das CDN profitieren. Die Voraussetzungen dafĂŒr sind: das Objekt muss im Cache vorhanden sein und die NĂ€he des CDN-Punkts zum Benutzer im Vergleich zum Server der Webanwendung (Origin-Server). Es ist wichtig zu verstehen: Geografische NĂ€he eines CDN-Knotens garantiert nicht niedrige Latenzen. Die Routing-Strategien zwischen dem Client und dem CDN können so gestaltet sein, dass der Client sich mit einem Host in einem anderen Land oder sogar auf einem anderen Kontinent verbindet. Hier kommen die Beziehungen der Telekommunikationsanbieter und des CDN-Dienstes (Peering, VerfĂŒgbarkeit von Interconnects, Teilnahme an IX usw.) sowie die Traffic-Routing-Politik des CDNs ins Spiel. Zum Beispiel garantiert Cloudflare bei Verwendung der beiden BasisplĂ€ne (kostenlos und gĂŒnstig) nicht die Bereitstellung von Inhalten vom nĂ€chstgelegenen Knoten – die Auswahl des Hosts erfolgt, um die minimalen Kosten zu erreichen.

Viele fĂŒhrende Internetunternehmen ziehen das Interesse von Webentwicklern und Dienstanbieter zu Themen wie Ladegeschwindigkeit und Leistung von Websites auf sich. Zu diesen Unternehmen gehören Yahoo (Tool Yslow), AOL (WebPageTest) und Google (Dienst Page Speed Insights), die ihre eigenen Empfehlungen zur Beschleunigung von Websites entwickeln (insbesondere zur Kundenoptimierung). SpĂ€ter erscheinen neue Testwerkzeuge zur Messung der Geschwindigkeit von Websites, die ebenfalls RatschlĂ€ge zur Erhöhung der Geschwindigkeit geben. In jedem dieser Dienste oder Plugins gibt es die unverĂ€nderte Empfehlung „Verwenden Sie ein CDN“. Zur ErklĂ€rung des CDN-Effekts wird in der Regel auf die Verringerung von Netzwerkverzögerungen hingewiesen. Leider sind nicht alle bereit, zu verstehen, wie genau der Beschleunigungseffekt durch ein CDN erzielt wird und wie er gemessen werden kann, sodass die Empfehlung oft als gegeben angenommen und als Postulat verwendet wird. In Wirklichkeit sind jedoch lĂ€ngst nicht alle CDNs gleichermaßen nĂŒtzlich.

Die Nutzung von CDN heute

Um den Nutzen der Anwendung von CDNs zu bewerten, mĂŒssen sie klassifiziert werden. Was man heutzutage in der Praxis antreffen kann (die Beispiele in Klammern sind natĂŒrlich nicht abschließend):

  1. Kostenlose CDNs fĂŒr die Bereitstellung von JS-Bibliotheken (MaxCDN, Google, Yandex).
  2. CDN-Dienste zur Kundenoptimierung (zum Beispiel Google Fonts fĂŒr Schriftarten, Cloudinary, Cloudimage fĂŒr Bilder).
  3. CDN fĂŒr statische Inhalte und Ressourcenoptimierung in CMS (verfĂŒgbar in Bitrix, WordPress und anderen).
  4. Allzweck-CDN (StackPath, CDNVideo, NGENIX, MegaFon).
  5. CDN zur Beschleunigung von Websites (Cloudflare, Imperva, Airy).

Der entscheidende Unterschied zwischen diesen Typen besteht darin, welcher Teil des Traffics durch das CDN lĂ€uft. Typen 1-3 liefern nur einen Teil des Inhalts: von einer Anfrage bis zu mehreren Dutzend (in der Regel Bilder). Typen 4 und 5 beinhalten das vollstĂ€ndige Proxieren des Traffics ĂŒber das CDN.

In der Praxis bedeutet dies die Anzahl der Verbindungen, die zum Laden der Website verwendet werden. Bei Verwendung von HTTP/2 nutzen wir eine einzige TCP-Verbindung zum Host, um eine beliebige Anzahl von Anfragen zu verarbeiten. Wenn wir die Ressourcen auf den Haupt-Host (Origin) und das CDN aufteilen, mĂŒssen die Anfragen auf mehrere Domains verteilt werden, was mehrere TCP-Verbindungen erfordert. Im schlimmsten Fall ergibt sich daraus: DNS (1 RTT) + TCP (1 RTT) + TLS (2-3 RTT) = 6-7 RTT. In dieser Formel sind die Verzögerungen in mobilen Netzwerken zur Aktivierung des Funkkanals des GerĂ€ts (sofern nicht aktiv) und die Verzögerungen am Mobilfunkmast nicht berĂŒcksichtigt.

So sieht es beim Laden der Website aus (die Verzögerungen beim Anschluss an das CDN bei RTT 150 ms sind hervorgehoben):

[ĐĐ”] verwenden Sie CDN

Wenn das CDN den gesamten Traffic der Website abdeckt (außer fĂŒr externe Dienste), können wir eine einzige TCP-Verbindung verwenden und Verzögerungen bei der Verbindung zu zusĂ€tzlichen Hosts einsparen. NatĂŒrlich gilt dies fĂŒr HTTP/2-Verbindungen.

Weitere Unterschiede ergeben sich aus der FunktionalitĂ€t des jeweiligen CDNs – fĂŒr den ersten Typ handelt es sich lediglich um und sogar eine statische Datei, fĂŒr den fĂŒnften um die Anpassung mehrerer Inhaltsarten der Website zur Optimierung.

Die Möglichkeiten von CDNs zur Beschleunigung von Websites

Lassen Sie uns das vollstÀndige Spektrum der Möglichkeiten von CDNs zur Beschleunigung von Websites beschreiben, ohne die FunktionalitÀt der einzelnen CDN-Typen zu betrachten, und dann sehen wir, was in jedem von ihnen umgesetzt ist.

1. Textressourcen komprimieren

Die grundlegendste und verstÀndlichste Möglichkeit, die jedoch hÀufig schlecht umgesetzt wird. Alle CDNs deklarieren Compression als Feature zur Beschleunigung. Wenn man jedoch nÀher hinsieht, zeigen sich MÀngel:

  • Es können niedrige Stufen fĂŒr die dynamische Kompression verwendet werden – 5-6 (zum Beispiel fĂŒr gzip maximal 9);
  • In der statischen Komprimierung (Cache-Dateien) werden keine zusĂ€tzlichen Funktionen verwendet (z. B. zopfi oder brotli mit Stufe 11).
  • Es gibt keine UnterstĂŒtzung fĂŒr effektive Brotli-Komprimierung (Einsparungen von etwa 20 % im Vergleich zu gzip).

Wenn Sie ein CDN verwenden, sollten Sie diese Punkte ĂŒberprĂŒfen: Nehmen Sie eine Datei, die vom CDN erhalten wurde, notieren Sie ihre GrĂ¶ĂŸe im komprimierten Format und dekomprimieren Sie sie manuell zum Vergleich (Sie können einen Online-Dienst mit Brotli-UnterstĂŒtzung verwenden, z. B. ĐČŃŃ‘ŃĐ¶Đ°Ń‚ŃŒ.рф).

2. Festlegung von Client-Cache-Headern

Eine einfache Funktion zur Beschleunigung: Setzen Sie Header fĂŒr die Client-Caching (Browser). Der relevanteste Header ist cache-control, veraltet ist expires. ZusĂ€tzlich kann Etag verwendet werden. Wichtig ist, dass max-age bei cache-control groß genug ist (mindestens einen Monat und mehr); wenn Sie die Ressource maximal hart cachen möchten, können Sie die Option immutable hinzufĂŒgen.

CDN können den Wert von max-age herabsetzen, was Benutzer dazu zwingt, statische Inhalte hĂ€ufiger neu zu laden. Ob dies mit dem Ziel verbunden ist, den Traffic im Netz zu erhöhen oder mit einer verbesserten KompatibilitĂ€t zu Websites, die den Cache nicht zurĂŒcksetzen können – ist unklar. Zum Beispiel betrĂ€gt der Standardwert fĂŒr die Cache-Dauer in den Cloudflare-Headern 1 Stunde, was fĂŒr unverĂ€nderliche statische Inhalte sehr wenig ist.

3. Bildoptimierung

Da CDN die Funktionen des Cachings und der Auslieferung von Bildern ĂŒbernimmt, wĂ€re es sinnvoll, diese auf der CDN-Seite zu optimieren und in dieser Form den Benutzern bereitzustellen. Abgesehen davon ist diese Möglichkeit nur fĂŒr die CDN-Typen 2, 3 und 5 verfĂŒgbar.

Bilder können auf verschiedene Weisen optimiert werden: durch die Verwendung von fortschrittlichen Komprimierungsformaten (z. B. WebP), effizienteren Codierern (MozJPEG) oder einfach durch das Entfernen unnötiger Metadaten.

Im Allgemeinen gibt es zwei Arten solcher Optimierungen: mit QualitĂ€tsverlust und ohne QualitĂ€tsverlust. CDNs streben normalerweise danach, Verlustfreie Optimierung zu verwenden, um mögliche Beschwerden von Kunden ĂŒber die QualitĂ€tsĂ€nderung von Bildern zu vermeiden. In solchen FĂ€llen wird der Gewinn minimal sein. In der RealitĂ€t ĂŒbersteigt die JPEG-QualitĂ€t hĂ€ufig das erforderliche Niveau, sodass man sicher eine Rekompression mit einem niedrigeren QualitĂ€tsfaktor durchfĂŒhren kann, ohne das Nutzererlebnis zu beeintrĂ€chtigen. Auf der anderen Seite ist es schwierig, das QualitĂ€tsniveau und die Einstellungen universell fĂŒr alle möglichen Webanwendungen zu bestimmen, weshalb CDNs konservativere Einstellungen verwenden im Vergleich zu denen, die kontextabhĂ€ngig angewendet werden könnten (Verwendungszweck der Bilder, Art der Webanwendung usw.)

4. Optimierung der TLS-Verbindung

Der Großteil des Traffics wird heute ĂŒber TLS-Verbindungen ĂŒbertragen, was bedeutet, dass wir zusĂ€tzliche Zeit fĂŒr die TLS-Aushandlung aufwenden. In letzter Zeit wurden neue Technologien entwickelt, um diesen Prozess zu beschleunigen. Dazu gehören beispielsweise EC-Kryptografie, TLS 1.3, Sitzungs-Caching und Session Tickets, hardwarebeschleunigte VerschlĂŒsselung (AES-NI) usw. Eine richtige TLS-Konfiguration ermöglicht es, die Verbindungszeit auf 0-1 RTT (ohne DNS und TCP) zu reduzieren.

Mit moderner Software ist es nicht schwierig, solche Praktiken in eigenen Infrastrukturen zu implementieren.

Nicht alle CDN-Anbieter setzen die besten Praktiken im Bereich TLS um. Dies kann durch das Messen der Zeit fĂŒr die TLS-Verbindung ĂŒberprĂŒft werden (zum Beispiel mit WebPageTest). Ideal fĂŒr eine neue Verbindung sind 1 RTT, 2 RTT ist ein durchschnittliches Niveau, 3 RTT und mehr sind schlecht.

Es ist auch zu beachten, dass selbst bei der Verwendung von TLS auf CDN-Ebene der Server mit unserer Webanwendung ebenfalls TLS verarbeiten muss, jedoch von der CDN-Seite, da der Traffic zwischen dem Server und dem CDN ĂŒber das öffentliche Netzwerk verlĂ€uft. Im schlimmsten Fall erhalten wir doppelte Verzögerungen bei der TLS-Verbindung (die erste zu dem CDN-Host, die zweite zwischen diesem und unserem Server).

Bei einigen Anwendungen sollte man auf Sicherheitsaspekte achten: Der Datenverkehr wird normalerweise an den Knotenpunkten des CDN entschlĂŒsselt, was eine potenzielle Möglichkeit fĂŒr den Datenverkehrsabbau darstellt. Eine Option zur Verarbeitung ohne Offenlegung des Datenverkehrs wird in der Regel in den Premium-Tarifen gegen eine zusĂ€tzliche GebĂŒhr angeboten.

5. Reduzierung der Verbindungslatenz

Der Hauptvorteil eines CDN, ĂŒber den alle reden: niedrige Latenzen (geringere Distanz) zwischen dem CDN-Host und dem Nutzer. Dies wird durch die Schaffung einer geografisch verteilten Netzwerkarchitektur erreicht, in der sich die Hosts an den Verbraucherzentren (StĂ€dten, Traffic Exchange Points usw.) befinden.

In der Praxis können die PrioritĂ€ten fĂŒr unterschiedliche Netzwerke in bestimmten Regionen liegen. Zum Beispiel haben russische CDNs mehr Points of Presence in Russland. Amerikanische Anbieter konzentrieren sich hauptsĂ€chlich auf den Ausbau des Netzwerks in den USA. Zum Beispiel hat einer der grĂ¶ĂŸten CDNs, Cloudflare, nur zwei Punkte in Russland – Moskau und St. Petersburg. Das bedeutet, dass wir maximal etwa 10 ms Latenz im Vergleich zur direkten Bereitstellung in Moskau sparen können.

Die meisten westlichen CDNs haben ĂŒberhaupt keine Knoten in Russland. Wenn Sie sich mit ihnen verbinden, können Sie nur die Latenz fĂŒr Ihr russisches Publikum erhöhen.

6. Inhaltsoptimierung (Minifizierung, strukturelle Änderungen)

Der komplizierteste und technisch anspruchsvollste Punkt. Änderungen des Inhalts wĂ€hrend der Lieferung können sehr riskant sein. Selbst bei der Minifizierung: Die Reduzierung des Quellcodes (durch ĂŒberflĂŒssige Leerzeichen, unwichtige Konstruktionen usw.) kann die FunktionalitĂ€t beeinflussen. Wenn es um ernsthaftere Änderungen geht – das Verschieben von JavaScript-Code an das Ende des HTML, das ZusammenfĂŒhren von Dateien und Ă€hnliches – steigt das Risiko, die FunktionalitĂ€t der Website zu beeintrĂ€chtigen, noch mehr.

Deshalb beschĂ€ftigen sich nur einige CDNs vom Typ 5 damit. NatĂŒrlich wird es nicht möglich sein, alle notwendigen Änderungen zur Beschleunigung zu automatisieren – eine manuelle Analyse und Optimierung ist erforderlich. Beispielsweise gehört das Entfernen von ungenutztem oder doppeltem Code zu den manuellen Aufgaben.

In der Regel werden alle derartigen Optimierungen ĂŒber die Einstellungen verwaltet, und die gefĂ€hrlichsten sind standardmĂ€ĂŸig deaktiviert.

UnterstĂŒtzung von Beschleunigungsfunktionen je nach Art des CDN

Lassen Sie uns also schauen, welche Beschleunigungsmöglichkeiten die verschiedenen Arten von CDN bieten.

Zur besseren Übersicht wiederholen wir die Klassifikation.

  1. Kostenlose CDNs fĂŒr die Bereitstellung von JS-Bibliotheken (MaxCDN, Google, Yandex).
  2. CDN-Dienste zur Kundenoptimierung (zum Beispiel Google Fonts fĂŒr Schriftarten, Cloudinary, Cloudimage fĂŒr Bilder).
  3. CDN fĂŒr statische Inhalte und Ressourcenoptimierung in CMS (verfĂŒgbar in Bitrix, WordPress und anderen).
  4. Allzweck-CDN (StackPath, CDNVideo, NGENIX, MegaFon).
  5. CDN zur Beschleunigung von Websites (Cloudflare, Imperva, Airy).

Nun vergleichen wir die Funktionen und Arten von CDN.

Möglichkeit
Typ 1
Typ 2
Typ 3
Typ 4
Typ 5

Textkompression
+–
–
+–
+–
+

Cache-Header
+
+
+
+
+

Bilder
–
+–
+–
–
+

TLS
–
–
–
+–
+

Latenzzeiten
–
–
–
+
+

Inhalt
–
–
–
–
+

In dieser Tabelle zeigt „+“ vollstĂ€ndige UnterstĂŒtzung an, „–“ kein Support und „+–“ partielle UnterstĂŒtzung. Es können natĂŒrlich Abweichungen von dieser Tabelle in der RealitĂ€t auftreten (z.B. könnte ein allgemeines CDN Funktionen zur Bildoptimierung implementieren), aber sie ist fĂŒr ein allgemeines VerstĂ€ndnis hilfreich.

Ergebnisse

Ich hoffe, dass Sie nach dem Lesen dieses Artikels ein klareres Bild ĂŒber die Empfehlung „verwenden Sie CDN“ zur Beschleunigung von Websites haben.

Wie in allen Dingen sollte man den Marketingversprechungen eines Dienstes nicht blind glauben. Der Effekt muss gemessen und unter realen Bedingungen getestet werden. Wenn Sie bereits ein CDN nutzen, ĂŒberprĂŒfen Sie dessen EffektivitĂ€t anhand der in diesem Artikel beschriebenen Kriterien.

Es ist möglich, dass die Nutzung eines CDN momentan die Ladezeiten Ihrer Website verlangsamt.

Als allgemeine Empfehlung können Sie Folgendes beachten: Lernen Sie Ihr Publikum kennen und bestimmen Sie dessen geografische Reichweite. Wenn Ihr Hauptpublikum im Umkreis von 1-2 Tausend Kilometern konzentriert ist, benötigen Sie kein CDN fĂŒr seinen eigentlichen Zweck – die Senkung der Latenzzeiten. Stattdessen können Sie Ihren Server nĂ€her an den Nutzern platzieren und ihn entsprechend konfigurieren, um die meisten der in dem Artikel beschriebenen Optimierungen kostenlos und dauerhaft zu erhalten.

Falls Ihr Publikum tatsĂ€chlich geografisch verteilt ist (Radius von ĂŒber 3000 Kilometern), kann die Nutzung eines hochwertigen CDNs von Vorteil sein. Sie sollten jedoch im Voraus verstehen, was Ihr CDN beschleunigen kann (siehe Tabelle der Möglichkeiten und deren Beschreibung). Die Geschwindigkeit Ihrer Website bleibt dennoch eine komplexe Aufgabe, die nicht allein durch die Anbindung eines CDNs gelöst werden kann. Neben den angegebenen Optimierungen bleiben die effektivsten Mittel zur Beschleunigung außen vor: die Optimierung des Servers, fortgeschrittene Änderungen auf der Clientseite (Entfernung ungenutzten Codes, Optimierung des Renderprozesses, Arbeiten mit Inhalten, Schriften, ResponsivitĂ€t usw.).

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster