HTTP2 Latency

· Funktionen

In einem früheren Beitrag habe ich einen Vergleich zwischen der Leistung von HTTP2 und HTTP1 über eine einzige Verbindung gezeigt (siehe HTTP2 vs HTTP1 Performance). In diesem Beitrag zeige ich einen Vergleich zwischen HTTP2 und HTTP1 unter Einbeziehung von Latenz und wie sich diese auf HTTP-Anfragen auswirken kann.

Wenn ein Client eine Anfrage macht, entsteht je nach Netzwerkbedingungen (Auslastung, Distanz zum Server …) mehr oder weniger Latenz. Latenz wirkt sich stark auf HTTP 1.1 aus: Bei einem Schwung von Anfragen musst du zuerst eine Anfrage senden, auf die Antwort des Servers warten, die nächste Anfrage senden und so weiter. Natürlich kannst du auch mehrere Verbindungen nutzen, aber das benötigt mehr Server-Ressourcen und skaliert schlecht.

HTTP2 nutzt eine einzige Verbindung für alle Anfragen, daher wirkt sich Latenz weniger aus. Du kannst mehrere Anfragen senden, ohne auf deren Verarbeitung zu warten, und der Vorgang läuft deutlich schneller.

HTTP2-Latenz-Test

Ich nutze den kostenlosen HTTP2-Golang-Testserver, um zu zeigen, wie sich Latenz auf HTTP/2 vs HTTP1 auswirkt.

Mit HTTP2 musst du nur alle Anfragen an den Server senden und die Antworten asynchron verarbeiten. Der Vorgang ist sehr schnell und dauert weniger als 1 Sekunde.

Bei HTTP1 hingegen werden die Anfragen einzeln gesendet, und bevor eine weitere Anfrage rausgeht, muss auf eine Antwort vom Server gewartet werden — der Vorgang ist also langsam.

Du kannst ein bereits kompiliertes sgcWebSockets-Demobeispiel für Windows über den folgenden Link herunterladen. Probier einfach die verschiedenen Optionen aus und vergleiche die Leistung beider Protokolle.