HTTP/1.1流水线和HTTP/2多路复用之间的区别是什么



是因为它要求按照请求的顺序对客户端进行响应,才导致了HTTP1.1中的行头阻塞问题吗?

如果每个请求花费的时间完全相等,那么就不会有行头阻塞和HTTP1.1流水线,并且会执行与HTTP/2多路复用相同的操作吗?

(假设HTTP/2请求中没有请求优先级,而忽略HTTP/2的其他更改,如标头压缩、二进制等)

HTTP/1.1不带管道:必须响应TCP连接上的每个HTTP请求,然后才能发出下一个请求。

HTTP/1.1带流水线:TCP连接上的每个HTTP请求都可以立即发出,而无需等待上一个请求的响应返回。回复将按相同顺序返回。

HTTP/2多路复用:TCP连接上的每个HTTP请求都可以立即发出,而无需等待上一个响应返回。回复可以按任何顺序返回。

HTTP/1.1管道仍然需要按照请求的顺序完整返回请求。

HTTP/2允许将请求-响应拆分为块,并以混合的方式返回,从而避免了行头阻塞。

此外,HTTP/1.1管道从未真正兴起,浏览器和服务器的支持也受到限制(请参阅:https://en.m.wikipedia.org/wiki/HTTP_pipelining)。

但是,是的,从理论上讲,它们是相似的,因此提供了相似的性能优势。HTTP/2只是一个更好、功能更全面、更受支持的版本,还有您已经注意到的其他好处。

有关HTTP/2多路复用的更深入讨论,请参阅我的回答:多路复用在HTTP/2 中意味着什么

我认为两者都提供了类似的性能改进。

然而,流水线(或双缓冲)受到代理程序和有时服务器错误的阻碍。因此浏览器停止支持它

解决方案是使用一个全新的协议HTTP/2。这有一些额外的功能,如无序返回、头压缩和服务器推送,但尚不清楚它们能提供多大的改进。关键问题是错误。

相关内容

  • 没有找到相关文章

最新更新