Er verglich das Abrufen der Datenpakete mit dem Transport von Waren via Lkw. Diese Lkw bewegen sich mit Lichtgeschwindigkeit, können aber nicht schneller fahren. Ruft man von München aus z. B. eine Webseite im Silikon Valley auf, passiert im Hintergrund Folgendes:
- 50 ms braucht der Lkw bis zum Server, das ist die „Request Time“.
- Der Server braucht 50 ms, um die Seite zu produzieren bzw. zur Verfügung zu stellen. Das ist die „Server Time“.
- Der Lkw fährt in 50 ms zurück zum Browser in München, das ist die „Response Time“. Ist die Ladung umfangreicher (also eine größere Datei), kann der Transport auch schon mal 150 ms in Anspruch nehmen.
- Wenn der Lkw zurück beim Browser ist, erfährt er, dass noch sehr viel mehr Pakete aus dem Silikon Valley geholt werden müssen. Jetzt werden mehrere Lkw losgeschickt, wozu allerdings weitere „Straßen“ in Form von Verbindungen eröffnet werden müssen. Diese müssen erst „gebaut“ werden. Das nimmt erneut etwas Zeit in Anspruch. Damit niemand in die Lkw sehen kann (Thema Sicherheit), müssen Tunnel gebaut werden (HTTPS, also Verschlüsselung). Das Bauen von Tunneln ist aber noch aufwendiger als normaler Straßenbau. Man muss dreimal hin- und herfahren (round trip), um einen solchen Tunnel zu bauen. Bevor die erste „sichere“ Fahrt (Request) gemacht werden kann, vergehen also 300 ms. Wenn Hunderte solcher Requests für eine Webseite gemacht werden müssen, summiert sich das sehr schnell heftig auf.
Dazu kommt, dass oft Ressourcen von anderen Webservern, nicht selten zehn, zwanzig oder mehr geladen werden. Zu denen müssen ebenfalls erst einmal einzelne Tunnel gebaut werden!
Plötzlich ist „Lichtgeschwindigkeit“ gar nicht mehr so schnell, weil durch unbedachtes Webdesign bzw. Programmierung sich die einzelnen Transporte behindern können, weil Pakete auf eine nur begrenzte Anzahl an Lkw (typischerweise sechs Stück, also sechs gleichzeitige Verbindungen) warten müssen. So werden aus Millisekunden schnell Sekunden, die man durchaus bemerkt.
Abbildung 2 zeigt einen solchen Ablauf in einer sogenannten Wasserfall-Darstellung. Im ersten Schritt (erste Zeile) wird ein Tunnel gebaut, was an dem orange-lila Balken erkennbar ist. Dann wird die HMTL-Seite übertragen. Anschließend wird über den gleichen Tunnel das CSS-File geholt. Jetzt „vermutet“ der Browser, dass da noch mehr kommt, und baut einen neuen Tunnel für einen zweiten Lkw (Zeile 3, orange-lila Balken). Ab jetzt wird mit zwei Lkw durch zwei Tunnel gleichzeitig gefahren. Ab Zeile acht ist zu sehen, dass der Browser erneut aufstockt und vier weitere Tunnel anlegt. Nun kann in sechs Tunneln gleichzeitig gefahren werden. Im Wasserfall-Modell ist sehr schön zu sehen, wie jeweils sechs Pakete transportiert werden, und wenn diese ausgeliefert sind, wird das nächste Paket auf die Reise geschickt. Aber eben erst dann …
Was steuerbar ist, so Anthony, ist die Entfernung, die Anzahl der Tunnel (Zeit), die Größe der Pakete und deren Anzahl.
Entfernung: Durch den Einsatz eines CDN (Content Delivery Network) wie Cloudflare, Fastly oder andere verkürzt man die Entfernung teils dramatisch. Es werden einfach Kopien der Ressourcen angelegt, die näher beim abfragenden Browser liegen. Ein Lkw muss also nicht bis ins Silikon Valley fahren, sondern z. B. nur bis Frankfurt, weil dort eine Kopie des Paketes liegt. Mit anderen Worten können aus 50 ms schnell 20 ms werden, nicht selten aus 200 ms eben auch nur noch 20 ms. Und das gilt für alle nachfolgenden Pakete. Ein großer Irrtum ist, dass mehr Bandbreite das Problem bei großen Paketen lösen würde. Eine Datei, die bei 1 Mbps 3.000 ms benötigt, braucht bei 3 Mbps zwar nur noch 1.600 ms, aber dann schmilzt der Geschwindigkeitsvorteil schnell dahin. Bei 10 Mbps (mehr als dreimal schneller!) landet man, wie der Referent zeigte, nur bei 1.400 ms. Der Grund ist einfach: Die Lkw können noch immer nur mit Lichtgeschwindigkeit fahren und müssen oft warten, weil zu wenige Tunnel zur Verfügung stehen. Mehr Bandbreite bringt also für die Page Load Time vergleichsweise wenig. Selbst bei 1.000 Mbps geht es am Ende nicht schneller. Für Streaming hilft die Bandbreite, aber eben nicht für Webseiten.
Anzahl der Tunnel bzw. Zeit: HTTP2 als Übertragungsprotokoll erlaubt, dass mehrere Lkw einen Tunnel gleichzeitig benutzen können. Zu sehen ist die Wirkung gut in Abbildung 3. Das Laden (Request) des ersten Pakets (erste Zeile) geht hier zwar langsamer, aber danach flutschen deutlich mehr Lkw durch den errichteten Tunnel. Der Stau ist beseitigt. Hat man allerdings noch immer zu viele Abhängigkeiten innerhalb der Ressourcen, vermindert sich der Vorteil schnell wieder.