web-dev-qa-db-fra.com

Quelle est la différence entre le pipeline HTTP/1.1 et le multiplexage HTTP/2?

Est-ce parce que cela nécessite que les réponses soient adressées au client dans l'ordre de la requête, ce qui cause le problème de blocage en tête de ligne dans HTTP 1.1?

Si chaque demande prend exactement le même temps, il n'y aura pas de blocage en tête de ligne ni de traitement en pipeline HTTP 1.1, mais le résultat est identique à celui du multiplexage HTTP/2?

(disons qu'il n'y a pas de priorité de requête dans les requêtes HTTP/2 et ne tiennent pas compte des autres modifications de HTTP/2 telles que la compression d'en-tête, les binaires, etc.)

19
prasun

Le traitement en pipeline HTTP/1.1 exige toujours que les demandes soient renvoyées dans leur intégralité, dans l'ordre demandé.

HTTP/2 permet de diviser les réponses des requêtes en fragments et de les renvoyer de manière entremêlée, évitant ainsi le blocage en tête de ligne.

De plus, le pipeline HTTP/1.1 n’a jamais vraiment décollé et la prise en charge des navigateurs et des serveurs est limitée (voir: https://en.m.wikipedia.org/wiki/HTTP_pipelining ).

Mais oui, en théorie, ils sont similaires et offrent donc des avantages de performance similaires. HTTP/2 est simplement une version améliorée, plus complète, plus supportée de cette solution, ainsi que d'autres avantages que vous avez notés.

21
Barry Pollard

HTTP/1.1 sans traitement en pipeline: Il est nécessaire de répondre à chaque demande HTTP via la connexion TCP avant de pouvoir effectuer la demande suivante. 

HTTP/1.1 avec traitement en pipeline: Chaque requête HTTP sur la connexion TCP peut être effectuée immédiatement sans attendre que la réponse de la requête précédente soit renvoyée. Les réponses reviendront dans le même ordre.

Multiplexage HTTP/2: Chaque requête HTTP sur la connexion TCP peut être effectuée immédiatement sans attendre le retour de la réponse précédente. Les réponses peuvent revenir dans n'importe quel ordre.

39
Elijah Lynn

Je pense que pour élaborer, les deux offrent des améliorations de performances similaires. 

Cependant, le pipelining (ou double buffering) est gêné par des proxies bogués et parfois des serveurs bogués. Alors les navigateurs ont cessé de le supporter. 

La solution consiste à utiliser un tout nouveau protocole HTTP/2. Cela comporte quelques fonctionnalités supplémentaires, telles que le retour hors service, la compression d'en-tête et le serveur en mode Push, mais on ne sait pas dans quelle mesure elles apportent des améliorations. La question clé est les bugs.

0
Tuntable