Re: Keep-Alive Notes

> I'll describe the HTTP-NG approach to the issue of header caching as used 
> in  1.0->NG->1.0 relay mode. 
> 
> Each  request takes place in a Context; a context is a bunch of state 
> associated with a set of requests. When a client proxy relays a 1.0 
> request, it can set a boolean indicating whether headers should be 
> reused or not. If headers are reused, then any request headers sent with 
> this request are merged with those used for the previous request; if a 
> header is not sent, then its value is reused as is; if they are sent then 
> the value is replaced. 

You could do this in 1.1 with a context="save" and context="use" params.

The problem is how does the server control how much context it is willing
to save, and given that, how does it inform the client of the current
context *before* the client's next request.  Assuming that the server
is willing to store arbitrary context (state) is a non-starter -- it
violates fundamental client-server design principles.

The remaining choices are to never retain state (and thus keep HTTP stateless)
or allow the server to decide what state will be retained.  Aside from the
additional complexity of implementation, the latter has a further deficiency
in that it disallows pipelining of requests.

What I am left with is a design quandary.  The only solution I can think
of is to include all three possibilities in the initial drafts and then
have a bake-off to determine which partitions are left in the standard.

 ...Roy T. Fielding
    Department of Information & Computer Science    (fielding@ics.uci.edu)
    University of California, Irvine, CA 92717-3425    fax:+1(714)824-4056
    http://www.ics.uci.edu/~fielding/

Received on Wednesday, 18 October 1995 13:55:30 UTC