HTTP Pipelining

HTTP pipelining is a technique in which multiple HTTP requests are sent on a single TCP connection without waiting for the corresponding responses.

The pipelining of requests results in a dramatic improvement in the loading times of HTML pages, especially over high latency connections such as satellite Internet connections. The speedup is less apparent on broadband connections, as the limitation of HTTP 1.1 still applies: the server must send its responses in the same order that the requests were received — so the entire connection remains first-in-first-out and HOL blocking can occur. The asynchronous operation of the upcoming HTTP 2.0 or SPDY could be a solution for this.

Since it is usually possible to fit several HTTP requests in the same TCP packet, HTTP pipelining allows fewer TCP packets to be sent over the network, reducing network load.

Non-idempotent methods like POST should not be pipelined. Sequences of GET and HEAD requests can always be pipelined. A sequence of other idempotent requests like GET, HEAD, PUT and DELETE can be pipelined or not depending on whether requests in the sequence depend on the effect of others.

HTTP pipelining requires both the client and the server to support it. HTTP/1.1 conforming servers are required to support pipelining. This does not mean that servers are required to pipeline responses, but that they are required not to fail if a client chooses to pipeline requests.

Other articles related to "http pipelining, pipelining":

HTTP Pipelining - Implementation Status - Other Implementations
... the World Wide Web Consortium (W3C), supports pipelining since version 5.1 released at 18 February 1997 ... Other application development libraries that support HTTP pipelining include Perl modules providing client support for HTTP pipelining are HTTPAsync ... project HttpComponents provides pipelining support in the HttpCore NIO extensions ...