Re: HTTP/1.1 Pipelining

>When a client is talking to a proxy server and is pipelining requests,
>should it use a single pipeline connection to issue requests to 
>different origin servers ?
>ie should GET http://www.ups.com/ HTTP/1.1
>   and    GET http://www.fedex.com/ HTTP/1.1 
>be sent over the same pipeline or should a new connection be established.
>A common occurence of this is when advertisement gifs come from a 
>different server than the html file.
>
>I guess the question becomes :
>Can requests in the same pipeline be to different origin servers?

That would depend on the nature of the proxy.  A "personal proxy" (which
is essentially what a good user agent cache becomes) would probably
use multiple request threads (the equivalent of connections).  A small
group proxy would probably maintain a continuous two connections to
every client in its domain, and thus whether or not the two are pipelined
would depend on the presence of other outstanding requests.  Likewise,
a national proxy would likely maintain feeder connections to reqional
proxies.

In other words, HTTP is capable of doing either, and the best choice 
will depend on the context in which the proxy is configured.  A good
implementation plan would be to make such decisions configurable by
the proxy maintainer.

>With the advent of pipelined persistent connections ( and to a lesser
>extend 1.0 keep alives ), the distinction of 'who the client is
>talking to' is confusing to me.  Since while the client may be
>pipelining to a proxy, and the proxy can go ahead and do an
>old style connection to an origin server, how does the client deal
>with old responses?
>Assuming the answer to the previous question,  is yes...
>
>IE: client pipelines:
>  GET http://www.foo.com/ HTTP/1.1
>  GET http://www.bar.com/ HTTP/1.1
>what happens if foo.com is a 1.1 server ( the proxy can do a
>persistent conenction ) and bar.com is 1.0 (proxy cannot)?

The proxy is always sending HTTP/1.1 responses, even if the origin
is an HTTP/1.0 server.  The proxy is capable of "converting" any HTTP/1.0
response into a valid HTTP/1.1 response.  The only question in such
cases is how much conversion should be done.  Adding "Connection: close"
is the simplest, but it is generally more efficient (for the proxy)
to do a full conversion (i.e., add chunked encoding if no content-length
is present).

>Also, when the responses come back to the client, the first is
>a 1.1 response, and the second is a 1.0 response ..

Not if the proxy is 1.1 compliant.  It would be a very, very bad idea
for the proxy to change its HTTP-version based on the origin of the
response.

.....Roy

Received on Sunday, 13 April 1997 18:08:45 UTC