我知道HTTP 1.1支持流水线化,可以通过单个连接发送多个请求,但是这些请求需要由服务器按照从客户端发送的相同顺序进行服务。
此外,您可以从客户端并行发出多个HTTP请求,但是每个请求都需要一个单独的TCP连接。
由于多路传输,HTTP 2还支持通过单个TCP连接发出多个请求,因此不存在HTTP 1.1对保持顺序的限制。
如果多个请求是通过http 1.x并行发送的,则效果不佳。这是什么原因,http 1.x无法提供,因为无法完成类似复用的http 2。
答案 0 :(得分:1)
HTTP / 1.1在1999年进行了标准化,这只是HTTP / 1.0(1996年标准化)的一个小改进,基本上增加了对HTTP流水线,HTTP分块编码(内容长度事先未知)和HTTP的支持。默认。 1999年的互联网与今天有很大的不同(因为再过20年它可能会有很大的不同)。当时Javascript只是一种花哨的工具,可以在页面上滚动一些文本(即新闻行情等),没有Ajax和客户端的动态更新部分,整个Web 2.0的想法还很遥远。
换句话说:目前根本没有紧迫的需求来支持更复杂的协议以支持多路复用。再问20年,为什么HTTP / 2或HTTP / 3尚未具备2039年所需的所有功能。
答案 1 :(得分:1)
因为请求/响应对在HTTP / 1中没有标识符,所以当服务器或客户端收到部分请求或响应时,他们将不知道它属于哪个请求/响应对。
因此,需要按顺序完整地发送和接收请求和响应。
HTTP / 2具有多路复用功能,其中每个对(或“会话”)都有一个唯一的标识符,该标识符随每个“帧”一起发送,因此部分请求或响应的接收者会知道它属于哪个对。