Man stelle sich folgendes Szenario vor: Es existiert eine Webseite, die eine Vielzahl von Grafiken, die auf dem gleichem Server hinterlegt sind, einbindet. Diese Webseite wird erfahrungsgemäß eine überdurchschnittlich lange Ladezeit haben. Aber nicht nur aufgrund der zu übertragenen Datenmengen, sondern auch aufgrund der maximalen Anzahl von Verbindungen, die ein Browser auf ein und denselben Server erlaubt. Hier werde ich etwas über die Beschleunigung vom Aufbau von Webseiten schreiben. Dabei verwende ich gewisse DNS Einstellungen, so genannte CNAME-Records mit denen ich serverseitig mehrere parallele HTTP-Verbindungen erlauben kann und so das Laden der Webseite durch den Browser des Nutzers beschleunige.
Standardmäßig sind moderne Browser mit maximalen Anzahl von sechs Verbindungen (IE 6 und IE 7 maximal zwei Verbindungen) zu ein und demselben Host begrenzt. Das führt dazu, dass das Laden von Dateien (Bilder, HTML-Seiten, JavaScripts oder Stylesheets) von einer Webseite in Blöcken unterteilt wird. Dabei würde es um einiges schneller gehen können, wenn ich die zu ladenden Dateien auf verschiedene Hostnamen verteile. So können für jeden Hostnamen mehr Verbindungen gleichzeitig ermöglicht werden.
Man betrachte zum Beispiel Google Maps. Die angezeigte Karte besteht aus einer vielzahl von so genannten Tiles. Tiles sind einfach Kacheln. Jede Kachel stellt einen Kartenausschnitt dar:

Damit die Karte schnellstmöglich trotz der Browserbegrenzung von sechs Verbindungen geladen werden kann, verteilt Google Maps die zu ladenden Kacheln auf verschiedene Hostnamen (Subdomains). Google verwendet vier Subdomains: mt0, mt1, mt2 und mt3.google.de:

Grundsätzlich ist es kein großes Problem verschiedene Subdomains anzulegen und die Dateien einer Webseite auf diese Subdomains zu verteilen. Allerdings besteht so recht schnell die Gefahr, dass man als Administrator den Überblick verliert, wo welche Dateien abgespeichert sind. Einfacher wäre es, zB. alle Mediendateien (zB. Bilder, Videos) unter einer Subdomain abzuspeichern. Um das Laden der Startseite erheblich zu beschleunigen, aber ohne zahlreiche Subdomains zu arbeiten kann man wie folgt vorgehen:
- Ich lege unter der Hauptdomain eine einzige subdomain namens media.domain an. Hier speichere ich alle Bilder ab.
- Ich lege so genannte CNAMES Einträge in meinen DNS Einstellungen an. Ein CNAME ist – einfach erklärt – ein Domain-Alias. In meinem Fall wähle ich zwei CNAME-Einträge namens “media0.domain.de” und “media1.domain.de” an. Am einfachsten geht es über die Adminoberfläche Plesk und sieht folgendermaße aus:

- Diese beiden Einträge bewirken, dass media0.domain.de und media1.domain.de auf die gleiche subdomain media.domain.de umleiten. Ich habe jetzt also eine Subdomain, die auf drei unterschiedliche Weisen erreicht werden kann. Der Browser des Nutzers interpretiert die drei Domains als drei unterschiedliche Adressen, die aber auf den gleichen Speicherort verweisen. So sind drei mal so viele Verbindungen zum eigentlich gleichen Host möglich. Der Browser wird einfach ausgetrickst.
- Bei der Einbindung der Bilder in die Webseite muss ich jetzt nur die zwei verschiedenen “subdomains” media0 und media1 verteilen. Ich löse das über einen Zufallsgenerator in meinem PHP Script, dass den HTML-Code generiert. Dieser könnte zB. so aussehen:
$media_domains = array('media0', 'media1');
foreach($bilder as $bild) {
shuffle($media_domains);
echo('<img src="' . $media_domains[0] . '.domain.tld/img/'. $bild . '" />');
}
Und fertig. Kommentare, Verbesserungsvorschlage? Dazu sind die Kommentare da.
0 Comments.