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 的服务器支持管线化。这并不是意味着服务器需要提供管线化的回复,而只是要求在收到管线化的请求时候不会失败。

实作

实作在网页伺服器

实作在浏览器