Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
HTTP pipelining
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Implementation status== Pipelining was introduced in HTTP/1.1 and was not present in HTTP/1.0.<ref>{{Cite web |url=http://www8.org/w8-papers/5c-protocols/key/key.html |title=Key Differences between HTTP/1.0 and HTTP/1.1 |access-date=2016-04-16 |archive-url=https://web.archive.org/web/20160424204340/http://www8.org/w8-papers/5c-protocols/key/key.html |archive-date=2016-04-24 |url-status=dead }}</ref> There have always been complaints about browsers, proxy servers, etc. not working well when using pipelined requests / responses, up to the point that for many years (at least till 2011) software developers, engineers, web experts, etc. tried to summarize the various kind of problems they noted, to fix things and to give advices about how to deal with pipelining on the Open Web.<ref name="make-pipelining-usable">{{Cite web|url= https://www.ietf.org/archive/id/draft-nottingham-http-pipeline-01.html|title=Making HTTP Pipelining Usable on the Open Web|date=March 14, 2011|author=Mark Nottingham|accessdate= October 16, 2021}}</ref> ===Implementation in web browsers=== Of all the major browsers, only [[Opera (web browser)|Opera]] had a fully working implementation that was enabled by default. In other browsers HTTP pipelining was disabled or not implemented.<ref name="lwnspdy" /> *[[Internet Explorer 8]] does not support pipeline requests, due to concerns regarding buggy proxies and [[head-of-line blocking]].<ref name="MSIE-8-chat-2008">{{cite web|url=http://www.microsoft.com/windowsxp/expertzone/chats/transcripts/08_0814_ez_ie8.mspx|title=Wayback link of 'Windows Internet Explorer 8 Expert Zone Chat (August 14, 2008)'|date=August 14, 2008|publisher=[[Microsoft]]|accessdate=May 10, 2012|archive-url=https://web.archive.org/web/20101204053757/http://www.microsoft.com/windowsxp/expertzone/chats/transcripts/08_0814_ez_ie8.mspx|archive-date=December 4, 2010|url-status=dead}}</ref> *[[Internet Explorer 11]] does not support pipelining.<ref>{{Cite news|url=https://blogs.msdn.microsoft.com/ie/2005/04/11/internet-explorer-and-connection-limits/|title=Internet Explorer and Connection Limits|newspaper=IEBlog|access-date=2016-11-14}}</ref> *Mozilla browsers (such as [[Mozilla Firefox]], [[SeaMonkey]] and [[Camino (web browser)|Camino]]) used to support pipelining; however, it was removed in Firefox 54.<ref>[https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/54 Firefox 54 Release Notes]</ref> When it was supported, pipelining was disabled by default to avoid issues with misbehaving servers.<ref>{{cite web|url= https://bugzilla.mozilla.org/show_bug.cgi?id=264354|title=Bug 264354: Enable HTTP pipelining by default|publisher=[[Mozilla]]|accessdate=September 16, 2011}}</ref> If pipelining was enabled by the user, Mozilla browsers used some heuristics, mostly to turn pipelining off for older [[Internet Information Services|Microsoft IIS]] servers.<ref>{{cite web|url=https://hg.mozilla.org/releases/mozilla-2.0/file/09565753ce5f/netwerk/protocol/http/src/nsHttpConnection.cpp#l251|title=Source code β nsHttpConnection.cpp|publisher=Mozilla|work=Firefox source code|date=May 7, 2010|accessdate=December 5, 2010}}</ref> The removal was eventually backported to SeaMonkey. *[[Konqueror]] 2.0 supports pipelining, but it is disabled by default.<ref>{{Cite book|url=https://books.google.com/books?id=J1gb2eb-NuEC&dq=pipelining+%22konqueror%22&pg=PA31|title=Internet Communication: Protocols and related subjects|author=Emir Arian|date=|access-date=2021-10-16|language=en|isbn=}}</ref> *[[Google Chrome]] previously supported pipelining, but it has been disabled due to bugs and problems with poorly behaving servers.<ref>[https://www.chromium.org/developers/design-documents/network-stack/http-pipelining HTTP Pipelining - The Chromium Projects]</ref> *[[Pale Moon (web browser)]] supports pipelining, and is enabled by default.<ref>{{Cite web|url=https://forum.palemoon.org/viewtopic.php?f=5&t=16869&p=123455|title=HTTP/1 Pipelining support has been removed in Firefox 54 - Pale Moon forum|website=forum.palemoon.org|language=en-us|access-date=2018-06-07}}</ref> ===Implementation in web proxy servers=== Most HTTP proxies do not pipeline outgoing requests.<ref>{{cite web|url= https://www.mnot.net/blog/2007/06/20/proxy_caching|title=The State of Proxy Caching|date=June 20, 2007|author=Mark Nottingham|accessdate= May 16, 2009}}</ref> Some HTTP proxies, including transparent HTTP proxies, may manage pipelined requests very badly (e.g. by mixing up the order of pipelined responses).<ref>{{cite web|url= https://www.mnot.net/blog/2011/07/11/what_proxies_must_do|title=What proxies must do|date=July 11, 2011|author=Mark Nottingham|accessdate= October 16, 2021}}</ref> Some versions of the [[Squid (software)|Squid]] web proxy will pipeline up to two outgoing requests. This functionality has been disabled by default and needs to be manually enabled for "bandwidth management and access logging reasons".<ref>{{cite web|url=http://www.squid-cache.org/Doc/config/pipeline_prefetch/|title=squid : pipeline_prefetch configuration directive|date=November 9, 2009|publisher=[[Squid (software)|Squid]]|accessdate=December 1, 2009}}</ref> Squid supports multiple requests from clients. The [[Polipo]] proxy pipelines outgoing requests.<ref>{{cite web|url= http://www.pps.jussieu.fr/~jch/software/polipo/|title=Polipo β a caching web proxy|date=September 18, 2009|publisher=Juliusz Chroboczek|accessdate=November 12, 2009}}</ref> Tempesta FW, an open source [[application delivery controller]],<ref>{{cite web|url= https://github.com/tempesta-tech/tempesta|title=Tempesta FW β a Linux Application Delivery Controller|publisher=GitHub|accessdate=March 29, 2018}}</ref> also pipelines requests to backend servers.<ref>{{cite web|url= https://github.com/tempesta-tech/tempesta/wiki/Servers:-Tempesta's-side|title=Servers: Tempesta's side - tempesta-tech/tempesta Wiki|date=August 1, 2017|publisher=Tempesta Technologies INC|accessdate=March 29, 2018}}</ref> ===Other implementations=== The [[libwww]] [[library (computing)|library]] made by the [[World Wide Web Consortium]] (W3C), supports pipelining since version 5.1 released at 18 February 1997.<ref>{{cite web|last=Kahan|first=JosΓ©|title=Change History of libwww|url=http://www.w3.org/Library/User/History.html |publisher=[[World Wide Web Consortium]]|accessdate=August 3, 2010|date= June 7, 2002}}</ref> Other application development libraries that support HTTP pipelining include: *Perl modules providing client support for HTTP pipelining are HTTP::Async and the LWPng ([[libwww-perl]] New Generation) library.<ref>{{Cite web |url=http://miltonkeynes.pm.org/talks/2010/02/colin_bradford_http_async.pdf |title=Using HTTP::Async for Parallel HTTP Requests (Colin Bradford) |access-date=2010-08-03 |archive-url=https://web.archive.org/web/20120310042434/http://miltonkeynes.pm.org/talks/2010/02/colin_bradford_http_async.pdf |archive-date=2012-03-10 |url-status=dead }}</ref> *The Microsoft [[.NET Framework]] 3.5 supports HTTP pipelining in the module <code>System.Net.HttpWebRequest</code>.<ref>[http://blogs.msdn.com/b/mflasko/archive/2006/07/17/669293.aspx System.Net.HttpWebRequest & pipelining]</ref> *[[Qt (framework)|Qt]] class <code>QNetworkRequest</code>, introduced in 4.4.<ref>[http://doc.qt.nokia.com/4.6/qnetworkrequest.html QNetworkRequest Class Reference] {{webarchive|url=https://web.archive.org/web/20091222054207/http://doc.qt.nokia.com/4.6/qnetworkrequest.html |date=2009-12-22 }}, Nokia QT documentation</ref> Some other applications currently exploiting pipelining are: *IceBreak application server since BUILD389 *phttpget from [[FreeBSD]] (a minimalist pipelined HTTP client)<ref>[http://www.daemonology.net/phttpget/ Pipelined HTTP GET utility]</ref> *[[libcurl]] previously had limited support for pipelining using the CURLMOPT_PIPELINING option,<ref>[http://curl.haxx.se/dev/readme-pipelining.html Curl pipelining explanation] {{webarchive|url=https://web.archive.org/web/20120627181619/http://curl.haxx.se/dev/readme-pipelining.html|date=2012-06-27}}, Curl developer documentation</ref> but this support was removed in version 7.65.0<ref>[https://daniel.haxx.se/blog/2019/04/06/curl-says-bye-bye-to-pipelining/ Curl pipelining removal announcement]{{webarchive|url=https://web.archive.org/web/20210205184800/https://daniel.haxx.se/blog/2019/04/06/curl-says-bye-bye-to-pipelining/|date=2021-02-05}}</ref> *[[portsnap]] (a [[FreeBSD]] [[FreeBSD Ports|ports tree]] distribution system) *[[APT (software)|Advanced Packaging Tool]] (APT) supports pipelining.{{Citation needed|date=August 2010}} *[[Apache Subversion|Subversion]] (SVN) has optional support for HTTP pipelining with the serf WebDAV access module (the default module, neon, does not have pipelining support).<ref>{{cite book | title = Version Control with Subversion|author1=C. Michael Pilato |author2=Ben Collins-Sussman |author3=Brian W. Fitzpatrick |page=238|publisher=[[O'Reilly Media]]|year=2008|isbn=978-0-596-51033-6}}</ref><ref>{{cite web|url=http://www.erenkrantz.com/oscon/OSCON%202007%20Subversion%20New%20Toys.pdf|title=Subversion: Powerful New Toys|author=Justin R. Erenkrantz|year=2007}}</ref> *[[Microsoft Message Queuing]] on [[Windows Server 2003]] utilises pipelining on HTTP by default, and can be configured to use it on HTTPS.<ref>{{cite web|url= https://technet.microsoft.com/en-us/library/cc737394%28WS.10%29.aspx|title= HTTP/HTTPS messages|publisher=[[Microsoft TechNet]]|date=January 21, 2005}}</ref> *IBM [[CICS]] 3.1 supports HTTP pipelining within its client.<ref>[http://publib.boulder.ibm.com/infocenter/cicsts/v3r1/index.jsp?topic=/com.ibm.cics.ts31.doc/dfhtl/topics/dfhtl_cwspipelining.htm How CICS Web support handles pipelining]</ref> Testing tools which support HTTP pipelining include: *[[httperf]]<ref>{{Cite web |url=http://www.hpl.hp.com/research/linux/httperf/ |title=HTTP Website |access-date=2010-10-01 |archive-url=https://web.archive.org/web/20120608143409/http://www.hpl.hp.com/research/linux/httperf/ |archive-date=2012-06-08 |url-status=dead }}</ref> *[[Nmap]] supports pipelining requests with the Nmap Scripting Engine (NSE)<ref>{{Cite web |url=https://nmap.org/nsedoc/lib/http.html |title=Library http |access-date=2024-11-12}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)