-----Original Message-----
Bill Sugas said:
My Netscape buddies tell me a way to dramatically improve
data throughput while browsing (especially wireless
browsing) is by enabling a feature called "pipelining".
They also tell me pipelining in not supported in IE6, but
that "multiple TCP connections" is; they assert this makes
IE6 as fast as Netscape for web browsing.
I cannot find a setting in IE6 to enable "multiple TCP
connections" - does anyone know how to set this option?
Some users use the term pipelining to mean persistent connections, a
feature available in HTTP/1.1, (see advanced options in IE). However,
that's not correct. See the links below for info on HTTP/1.1 and its
persistent connections and pipelining features:
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2068.html
http://www.w3.org/Protocols/rfc2616/rfc2616- sec8.html#sec8.1
faq.html
http://www.cio.com/WebMaster/sem2_http11.html
However, just because a browser says it supports HTTP/1.1 does NOT mean
it supports ALL of its features. I think the Netscape users think they
have it and IE users don't because Netscape users have separate settings
to enable/disable HTTP/1.1 and pipelining. Since pipelining is a
feature defined within the HTTP/1.1 specification, enabling HTTP/1.1
could mean you get all of the features in that spec. To be HTTP/1.1
compliant means you support the features defined with the spec for that
protocol. The browsers that crow about their pipelining feature would
like you not to realize that it is already part of the HTTP/1.1
specification. In Mozilla, you can enable/disable persistent
connections and pipelining as options separate of enabling/disabling
HTTP/1.1. Since both are the crucial reasons why HTTP/1.1 was created,
you effectively kill HTTP/1.1 although it looks enabled. Apparently the
only real feature of these other browsers is their ability to disable or
handicap some portion of HTTP/1.1 (but then they would be supporting
those features in order to disable them). It is possible (and probable)
that Microsoft did not utilize all of HTTP/1.1 in their browser's
implementation of this spec but it should at least support persistent
connections.
At
http://www.tss.oregonstate.edu/consulting/faq/browser/? page=home&type=text,
it says, "Go to Edit | Preferences | Advanced | HTTP Networking and
check 'Enable Pipelining'. This fetches everything on the page in a
single connection, rather than one connection per item. It is switched
off by default because some servers and proxies have problems with
pipelining, but it tremendously improves browsing performance." Okay,
but what does pipelining give you over a persistent connection?
Pipelining means you submit multiple requests but still have to wait for
them to arrive in order and process them in that order. So you shotgun
out the requests but accept them one at a time. Without a persistent
connection, your browser had to keep making a new connection for each
object that got downloaded, like images, buttons, and whatnot. With a
persistent connection, you make one connection and get all the downloads
for a page. A persistent connection makes the downloading go faster.
Pipelining doesn't make the download faster but instead makes the server
work harder to fetch the objects in a parallel-like manner but which
would be futile without the persistent connection (although, apparently,
you can do pipelining over a non-persistent connection but I don't know
what good that would do if you had to make a separate non- persistent
connection for every object download, anyway). Pipelining gets the
server working harder so it faster presents the objects to be available
for download, but then I wonder if a page caching proxy wouldn't provide
the same speedup.
Servers may have pipelining disabled as it incurs a lot of overhead.
HTTP/1.1 servers are required to support pipelining by simply not
failing the pipeline request from a client, but they don't really have
to pipeline their requests. As noted at
http://www.cs.wisc.edu/~cao/papers/persistent- connection.html, Netscape
doesn't kill a persistent connection if you reuse the browser instance
to navigate to another web site, so servers can end up with dead
connections that are kept alive for no purpose (and why some sites will
disable pipelining). IE times out persistent connections after 60
seconds (this must be for version 6 because it didn't happen before).
Netscape will use up to a max of 6 concurrent persistent connections but
can go up to 13 (or maybe 15) by opening multiple instances of Netscape.
IE only lets you have 2 regardless of how many instances are open for
that browser; see their KB article 183110
(
http://support.microsoft.com/default.aspx?scid=kb; [LN];183110) -
which also means Netscape is NOT obeying RFC 2068 which says, "A
single-user client SHOULD maintain AT MOST 2 connections with any server
or proxy" (but then this Microsoft's KB article tells you how to make IE
also not obey). The Wisc.edu article says neither browser lets you use
pipelining over persistent connections but that might've changed in
version 7 of Netscape, so it is likely that pipelining is yet to come in
IE6. Guess we'll have to wait for the next IE version to catch up.
Until then, you might want to trial other browsers to see what you might
like better. For example,
http://users.pandora.be/stef.andries/mozilla/101things.htm lists why
Mozilla is better than IE (but I'm continue to use IE since several
add-ons and browser helper objects that I use will only work with IE).
.