Speed Optimierung für WordPress – Part 5: Implementierung eines CDN
Heute möchte ich über meine persönlichen Erfahrungen mit dem Einsatz eines Content Delivery Netzwerkes (CDN) berichten. Grundlegend technisches, warum ein CDN einsetzen ?
1. Parallele Abarbeitung von Dateizugriffen
Wenn man eine Webseite mit dem Browser öffnet, dann muss dieser eine Menge Daten und Files von dem Webserver laden, auf dem die Zielwebseite abgelegt sind.
Schaut man sich die Liste auf Browserscope an, dann sieht man in der Spalte „Connections per Hostname„, dass die Anzahl der Dateien die ein Browser parallel von einem (!) Hostnamen abholen kann nicht wirklich sehr groß ist. Bildet man einen Schnitt über diese Spalte sind das knapp 7 parallele Abfragen per Hostnamen.
Ruft man nun z.B. die Startseite von www.spiegel.de auf, werden im ersten Wurf 89 Dateien abgerufen; sprich der Browser holt (im Schnitt) immer nur 7 Dateien parallel ab, die jeweils verbleibenden Dateien werden also ersteinmal hinten an gestellt, das kostet Zeit und erhöht die Ladezeit einer Webseite.
2. Global Verteilte Webinhalte
Die Betreiber eines CDN Netzwerkes greifen nun diesen Gedanken auf, spinnen diesen weiter und verteilen Daten / Webinhalte weltweit in diversen Rechenzentren.
Damit wird sichergestellt, dass der User die gewünschten Daten immer von geografisch nächstgelegenen Rechenzentrum abholt. Auch in Zeiten von „High Speed Internet“ stehen zwischen einem User und der gewünschten Webseite immer noch sehr viele Netzwerkgeräte. Jedes Netzwerkgerät braucht Zeit um die Anfrage vom User entgegenzunehmen und korrekt weiterzuleiten. Je größer also die geografische Distanz zwischen User und der gehosteten Webseite liegt, umso länger dauert die Übertragung der Daten.
3. Kombination dieser beiden Punkte
Wenn nun also Teile einer Webseite, z.B. Bilder, in einem CDN Netzwerk auslagert sind, dann werden die Punkte 1 und 2 quasi kombiniert.
Die Webseite die ein User abrufen möchte lautet z.B. http://webseite-eins.de, die Bilder für diese Webseite liegen aber im CDN Netzwerk z.B. http://webseite-eins.cdn.de.
Somit kann der Browser die doppelte Anzahl von Daten parallel abholen, da ja zwei Webseiten / Server angefragt werden, und nicht nur einer.
Weiterhin bekommt ein User aus den USA, der eine in Deutschland gehostete Webseite aufrufen möchte, die Bilder nicht von dem Webserver in Deutschland, sondern von dem ihm geografisch am nächsten gelegenen CDN Server in den USA.
Idealerweise legt man eher statische und / oder größere Daten in einem CDN ab, damit der eigene Webserver vom Ausliefern dieser statischen Daten entlastet wird, und sich „nur“ um die Auslieferung der einzelnen dynamischen HTML / PHP … Seiten kümmern muss.
4. Wie finde ich einen passenden CDN Anbieter ?
Soweit so gut, aber welches de vielen CDN Angebote wähle ich nun aus, und wie binde ich das CDN in meine WordPress Installation ein ?
Diese Frage ist nicht einfach zu beantworten, da viele Faktoren darauf Einfluß nehmen.
Meine erste Intention war, einen CDN Anbieter aus Deutschland zu nehmen. So hatte ich mich in Prinzip schon auf das Angebot von Wave CDNeingeschossen, zudem man dort erst ab einem Datenvolumen größer 20 GB etwas zahlen muss. Während des Bestellvorganges habe ich mir die ABG’s und die Pflichten des Kunden durchgelesen – ja, der Kunde kann auch Pflichten haben – und mich danach gegen Wave CDN entschieden.
Auf der weiteren Suche u.a. über die Amazon Cloud und andere Anbieter bin ich auf MaxCDN gestossen, und mich dafür entschieden.
Mit einem dauerhaften Gutschein zahle ich im Monat dafür $ 6,95 inklusive 100 GB Datenvolumen. Heute würde ich mich sicherlich für die Amazon S3 Cloud entscheiden, da Amazon die Preise aktuell ja gesenkt hat.
Ich binde MaxCDN mit dem Plugin „WP Super Cache“ ein, das geht fix, und die Synchronisation zwischen meiner WordPress Installation und MaxCDN funktioniert für die angegebenen Pfade out of the box. Auf der Webseite von MaxCDN gibt es eine sehr ausführliche Dokumentation(auch mit Video), wie das Ganze einzubinden ist.
Mein Fazit: die Implementation eines CDN Netzwerkes lohnt sich definitiv, auch wenn man ein paar Euros pro Monat dafür ausgeben muss.
Die Usability in Bezug auf Ladezeiten meines Blogs ist deutlich gestiegen, und Google wertet die Ladezeiten einer Webseite durchweg positiv.