it-swarm.com.de

Was ist der Unterschied zwischen HTTP/1.1-Pipelining und HTTP/2-Multiplexing?

Liegt es daran, dass die Antworten in der Reihenfolge der Anforderungen an den Client gesendet werden müssen, wodurch das Problem der Blockierung des Head-of-Line in HTTP 1.1 verursacht wird?

Wenn jede Anforderung genau die gleiche Zeit benötigt, wird kein Head-of-Line-Blocking und kein HTTP 1.1-Pipelining durchgeführt und es wird dieselbe Leistung wie beim HTTP/2-Multiplexing erbracht.

(Nehmen wir an, es gibt keine Anforderungspriorität in HTTP/2-Anforderungen und ignorieren andere Änderungen von HTTP/2, wie z. B. Headerkomprimierung, Binärdateien usw.)

19
prasun

Für das HTTP/1.1-Pipelining müssen die Anforderungen dennoch in der angeforderten Reihenfolge vollständig zurückgegeben werden.

HTTP/2 ermöglicht die Aufteilung der Anforderungsantworten in Chunks, die in einer vermischten Art und Weise zurückgegeben werden, um das Blockieren der Kopfzeile zu vermeiden.

Außerdem hat HTTP/1.1-Pipelining nie wirklich angefangen und die Browser- und Server-Unterstützung ist begrenzt (siehe: https://en.m.wikipedia.org/wiki/HTTP_pipelining ).

Ja, theoretisch sind sie jedoch ähnlich und bieten daher ähnliche Leistungsvorteile. HTTP/2 ist nur eine bessere, umfassendere, besser unterstützte Version davon - zusammen mit anderen Vorteilen, die Sie bereits bemerkt haben.

21
Barry Pollard

HTTP/1.1 ohne Pipelining: Jede HTTP-Anforderung über die Verbindung TCP muss beantwortet werden, bevor die nächste Anforderung gestellt werden kann. 

HTTP/1.1 mit Pipelining: Jede HTTP-Anforderung über die Verbindung TCP kann sofort ausgeführt werden, ohne auf die Antwort der vorherigen Anforderung zu warten. Die Antworten werden in derselben Reihenfolge zurückgegeben.

HTTP/2-Multiplexing: Jede HTTP-Anforderung über die Verbindung TCP kann sofort ausgeführt werden, ohne zu warten, bis die vorherige Antwort zurückkommt. Die Antworten können in beliebiger Reihenfolge zurückgegeben werden.

39
Elijah Lynn

Ich denke, um genau zu sein, bieten beide ähnliche Leistungsverbesserungen. 

Pipelining (oder Doppelpufferung) wird jedoch durch fehlerhafte Proxys und manchmal fehlerhafte Server behindert. Daher haben Browser die Unterstützung eingestellt. 

Die Lösung ist die Verwendung eines völlig neuen Protokolls HTTP/2. Dies hat einige zusätzliche Funktionen, wie z. B. Out-of-Order-Return, Header-Komprimierung und Server-Push. Es ist jedoch unklar, inwieweit sie eine Verbesserung bewirken. Das Hauptproblem sind die Fehler.

0
Tuntable