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