是不是因为它要求响应按照请求的顺序发送给客户端,导致了HTTP1.1中的行头阻塞问题?
如果每个请求花费的时间完全相等,那么就不会有行头阻塞和HTTP 1.1流水线,并且会执行与HTTP/2多路复用相同的性能吗?
(假设在HTTP/2请求中没有请求优先级,并忽略HTTP/2的其他更改,如报头压缩、二进制等。)
发布于 2015-12-27 17:10:15
HTTP/1.1流水线仍然要求按照请求的顺序完整地返回请求。
HTTP/2允许请求响应被分成块,并以混合的方式返回,从而避免了行头阻塞。
此外,HTTP/1.1流水线从未真正起飞,浏览器和服务器的支持也是有限的(参见:https://en.m.wikipedia.org/wiki/HTTP_pipelining)。
但是,是的,在理论上,它们是相似的,因此提供了类似的性能优势。HTTP/2只是一个更好的、功能更全、更受支持的版本--以及你已经注意到的其他好处。
有关HTTP/2多路复用的更深层次的讨论,请参阅我的回答:What does multiplexing mean in HTTP/2
发布于 2016-04-06 06:07:06
不使用管道的TCP /1.1:在发出下一个请求之前,必须对通过连接的每个HTTP请求进行响应。
使用流水线的TCP /1.1:通过连接的每个HTTP请求都可以立即发出,而无需等待前一个请求的响应返回。响应将以相同的顺序返回。
TCP /2多路复用:每个通过TCP连接的请求都可以立即发出,而无需等待前一个响应返回。响应可能以任何顺序返回。
发布于 2018-10-16 16:54:33
我认为更详细地说,两者都提供了类似的性能改进。
然而,流水线(或双缓冲)会受到有by的代理和有时有by的服务器的阻碍。所以浏览器不再支持它了。
解决方案是使用一种全新的协议HTTP/2。这有一些额外的功能,如无序返回、报头压缩和服务器推送,但尚不清楚它们提供了多大的改进。关键问题是bug。
https://stackoverflow.com/questions/34478967
复制相似问题