Bla: Problem mit Embedded Webserver in einem Messgerät

Beitrag lesen

Zitat aus Wikipedia:
"Derzeit werden zwei Protokollversionen, HTTP/1.0 und HTTP/1.1 verwendet.
Bei HTTP/1.0 wird vor jeder Anfrage eine neue TCP-Verbindung aufgebaut und nach Übertragung der Antwort wieder geschlossen. Sind in ein HTML-Dokument beispielsweise zehn Bilder eingebettet, so werden insgesamt elf TCP-Verbindungen benötigt, um die Seite auf einem grafikfähigen Browser aufzubauen.
In der Version 1.1 können mehrere Anfragen und Antworten pro TCP-Verbindung gesendet werden. Für das HTML-Dokument mit zehn Bildern wird so nur eine TCP-Verbindung benötigt."
Die max. Anzahl der Verbindungen hängt also von der Browser-Einstellung ab, aber ob er versucht, neue Verbindungen für die anderen Dateien zu öffnen, das hängt dann doch an der HTTP-Version.

Nein, den Wikipedia-Text hast du da missverstanden, genau genommen könnte man seinen letzten Satz auf die Praxis bezogen sogar als falsch bezeichnen.

HTTP 1.1 hat gegenüber 1.0 den Vorteil, eine offene Verbindung weiter verwenden zu können. Der Vorteil ist leicht nachzuvollziehen: Wenn man mit jemandem telefoniert, spricht man ja auch in einem durch und legt nicht nach jedem Satz auf, wählt neu, sagt einen Satz, legt auf, wählt neu, usw.
Diese Eigenschaft bedeutet aber nicht, dass, wie der Wikipedia-Experte geschrieben hat, ein Browser bei HTTP 1.1 nun sämtliche x Objekte einer Seite der Reihe nach durch eine einzige Verbindung lädt, und schon gar nicht, dass, wie du vermutest, der Browser bei 1.0 mehrere parallele Verbindungen benötigen würde. Das erste ist in der Praxis falsch (siehe unten), das zweite zwei Paar Schuhe (denn auch bei 1.0 könnte man schön eine Verbindung nach der anderen aktivieren).

Der Grund für das parallele Laden liegt im subjektiv schnelleren Seitenaufbau. Angenommen, wir hätten eine Seite, bestehend aus dem HTML-Code, einer Javascript- und einer CSS-Datei, sowie drei Grafiken. Dem Browser werden einmal eine, einmal zwei gleichzeitige Verbindungen zugestanden. Der Ladevorgang sieht dann ungefähr wie folgt aus:

Max. eine Verbindung:
1 HTML Javascrip CSS GraA GrafiB GrafC

Max. zwei Verbindungen, HTTP 1.1:
1 HTML Javascript-------- GrafikC---
2      CSS--- GrafikA- GrafikB------

Max. zwei Verbindungen, HTTP 1.0:
1 HTML
2      Javascript--------
3      CSS---
4             GrafikA-
5                      GrafikB------
6                         GrafikC---

Die Gesamtladedauer bleibt immer konstant, sie hängt von Leitungsgeschwindigkeit und Gesamtdatenmenge ab. Im ersten Fall flutschen die gleichen Daten schneller durch die Leitung, da die Leitung ja nicht wie in den beiden letzen Fällen auf zwei Verbindungen aufgeteilt werden muss.
(Die kleinen Einsparungen von HTTP 1.1, die durch das Wegfallen des bei 1.0 ständigen Verbindungsauf- und abbaus entstehen, habe ich mal außen vor gelassen.)

Wie aber zu erkennen ist, blockiert im ersten Fall die große Javascript-Datei das Laden der CSS-Formatierung, während im zweiten bzw. dritten Fall die Formatierung früher übertragen und damit der Seitenaufbau subjektiv deutlich früher vollendet ist, und dies sogar noch trotz des besagten Geschwindigkeitsmankos bei gleichzeitigen Verbindungen. Während Fall 2 und 3 schon fast die erste Grafik durch haben, ist Fall 1 erst bei den CSS-Daten zu Gange.

Egal ist es dabei, ob nun HTTP 1.1 mit weiterverwendbaren Verbindungen oder HTTP 1.0 mit neu zu öffnenden Verbindungen zur Anwendung kommt. Der Vorteil von 1.1 liegt hier lediglich im geringeren Verwaltungsaufwand, da nur zwei statt sechs Verbindungen geöffnet werden müssen.