我一直都知道网络浏览器可以进行并行下载.但是前几天我听说过流水线.我认为流水线操作只是并行下载的另一个名称,但后来发现即使firefox默认禁用流水线.这些东西有什么区别,如何一起工作?
我认为这篇 MDC 文章很好地解释了 HTTP 管道。
什么是 HTTP 管道?
通常,HTTP 请求是按顺序发出的,只有在完全接收到当前请求的响应后才会发出下一个请求。根据网络延迟和带宽限制,这可能会导致服务器看到下一个请求之前出现明显的延迟。
HTTP/1.1 允许将多个 HTTP 请求一起写出到一个套接字,而无需等待相应的响应。然后,请求者按照请求的顺序等待响应到达。管道化请求的行为可以显着改善页面加载时间,尤其是在高延迟连接上。
管道化还可以显着减少 TCP/IP 数据包的数量。典型的 MSS(最大段大小)范围为 536 到 1460 字节,可以将多个 HTTP 请求打包到一个 TCP/IP 数据包中。减少加载页面所需的数据包数量有利于整个互联网,因为更少的数据包自然会减轻 IP 路由器和网络的负担。
需要符合 HTTP/1.1 的服务器才能支持管道。这并不意味着服务器需要管道响应,而是要求如果客户端选择管道请求,它们就不会失败。这显然有可能引入一类新的传播错误,因为没有其他流行的网络浏览器实现管道化。
我建议阅读整篇文章,因为其中的内容比我复制到答案中的内容要多。