是因为它需要按照请求的顺序对客户端做出响应,导致HTTP 1.1中的行头阻塞问题?
如果每个请求花费的时间相等,那么就不会有行头阻塞和HTTP 1.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只是一个更好,更全功能,更受支持的版本 - 以及您注意到的其他好处.