- From: Tim.Greenwald <tim.greenwald@wamu.net>
- Date: Mon, 04 Aug 2003 08:52:11 -0500
- To: Ian Clelland <ian@veryfresh.com>, Mike Dierken <mdierken@hotmail.com>
- Cc: www-talk@w3.org
Keep-alive has been replaced with persistent connections. This works great because it doesn't make sense to open/close connections for every object. Pipelining, as I understand it, opens a connection from a client and sends request1, request2, request3... end. The problem as I see it is that the server services these requests sequentially, in the order received. So in HTTP 1.0 a client could open connection, send request1, and open a second connection, send request2,... Then the server can process these multiple connections and requests in a multi-threaded scenario. The bad side of this is the opening/closing of connections. The good side is the independent handling of those requests. Regards, Tim Greenwald "You can't manage what your not measuring" -----Original Message----- From: www-talk-request@w3.org [mailto:www-talk-request@w3.org]On Behalf Of Ian Clelland Sent: Saturday, August 02, 2003 6:35 PM To: Mike Dierken Cc: www-talk@w3.org Subject: Re: HTTP 1.1 Pipelining On Fri, Aug 01, 2003 at 09:30:59PM -0700, Mike Dierken wrote: > > Is pipelining the same as 'keep-alive'? > I thought it was something different... > > ----- Original Message ----- > From: "Tim.Greenwald" <tim.greenwald@wamu.net> > > I would be interested in comments regarding the trade-off of using > > pipelining. My thoughts on this are that it is great because it relieves > the > > burden on the server of having to open a TCP connection for each request > for > > an object but the trade-off is that the requests have to be sent/received > in > > order. This seems to me to override the benefits of multi-threading. If I > > was to send multiple GETs at the same time I would open multiple > connections > > but the requests could be processed concurrently. It's a similar concept -- Keep-Alive was an artifact of HTTP/1.0 which was removed in HTTP/1.1. In 1.1, the default behaviour is to keep connections open for some time to accept further requests, unless a 'Connection: close' header is sent. In response to the original question, I don't think it's really a tradeoff at all -- you can optimise a client's performance by using request pipelining in conjunction with multiple requests. I don't think it's uncommon for a web client to open one connection to a server to get a document, then open half a dozen more connections to get the related images / style sheet, and then keep all of those connections open. When the user clicks a link to another document on the same server, the connections are all still open, so the second document can be retreived even faster. Ian Clelland <ian@veryfresh.com>
Received on Monday, 4 August 2003 10:20:20 UTC