是不是因为HTTP1.1要求响应按照请求的顺序返回给客户端,导致了先到先服务阻塞问题?
如果每个请求需要的时间完全相同,那么就不会有先到先服务阻塞的问题,而HTTP1.1流水线技术则可以与HTTP/2多路复用实现相同的性能表现?
(假设HTTP/2中没有请求优先级,忽略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多路复用的深入讨论:What does multiplexing mean in HTTP/2