Next: Poor Mans Multiplexing, Previous: Persistent connections, Up: Network traffic

#### 1.4.2 Pipelining

With persistent connections it becomes possible to pipeline or stream requests, i.e. to send multiple requests on a single connection without waiting for the replies to come back. Because this technique gets the requests to the server faster, it reduces latency. Additionally, because multiple requests can often be sent in a single packet, pipelining reduces network traffic.

Pipelining is a fairly common technique1, but it is not supported by HTTP/1.0. HTTP/1.1 makes pipelining support compulsory in every server implementation that can use persistent connections, but there are a number of buggy servers that claim to implement HTTP/1.1 but don't support pipelining.

Polipo carefully probes for pipelining support in a server and uses pipelining if it believes that it is reliable. Polipo also deeply enjoys being pipelined at by a client2.

#### Footnotes

[1] The X11 protocol fundamentally relies on pipelining. NNTP does support pipelining. SMTP doesn't, while ESMTP makes it an option. FTP does support pipelining on the control connection.

[2] Other client-side implementations of HTTP that make use of pipelining include Opera, Mozilla, APT (the package downloader used by Debian GNU/Linux) and LFTP.