HTTP流水线

HTTP流水线(英语:HTTP pipelining)是将多个HTTP请求(request)整批提交的技术,而在发送过程中不需先等待伺服器的回应。

Schema of non-pipelined vs. pipelined connection.

请求结果流水线使得 HTML 网页加载时间动态提升,特别是在具体有高延迟的连接环境下,如卫星上网。在宽频连接中,加速不是那么显著的,因为需要服务端要遵循 HTTP/1.1 协议,必须按照客户端发送的请求顺序来回复请求,这样整个连接还是先进先出的,队头阻塞(HOL blocking)可能会发生,造成延迟。未来的 HTTP/2.0 或者SPDY中的异步操作将会解决这个问题。因为它可能将多个 HTTP 请求填充在一个TCP数据包内,HTTP 流水线需要在网络上传输较少的 TCP 数据包,减少了网络负载。

流水线机制须透过永久连线(persistent connection)完成,并且只有 GET 和 HEAD 等要求可以进行流水线,非幂等的方法,例如POST将不会被管线化。连续的 GET 和 HEAD 请求总可以管线化的。一个连续的幂等请求,如 GET,HEAD,PUT,DELETE,是否可以被管线化取决于一连串请求是否依赖于其他的。此外,初次建立连线时也不应启动流水线机制,因为对方(伺服器)不一定支持 HTTP/1.1 版本的协议。

HTTP 管线化同时依赖于客户端和伺服器的支持。遵守 HTTP/1.1 的伺服器支持管线化。这并不是意味着伺服器需要提供管线化的回复,而只是要求在收到管线化的请求时候不会失败。

实现

实现在网页伺服器

实现在浏览器