Re: Keep-Alive Notes

Roy Fileding writes:
> Strangely, everyone seems to be ignoring the part that I thought would
> create a maximum of flamage on this topic.  This is particularly amusing
> since Dave only pointed out two of the three Keep-Alive parameters
> before declaring the Keep-Alive header as unnecessary.
> 
>       Keep-Alive: state="Accept,Accept-Language,..."
> 
>    for indicating which header fields can be or have been stored as a
>    persistent request state.  This would allow the server to decide whether
>    or not to be stateless in its request handling, and the amount of state
>    it is willing/able to retain, while at the same time allowing each
>    request to override the saved state with or without changing what is saved.
> 
> I am actually disappointed -- normally such a statement would cause several
> keyboards to be worn out in the ensuing debate.  It isn't even well-defined;
> plenty of ambiguity in which to engender people's active imagination.
Important point. Reducing the amount of Accept* headers per request can speed up
the communication. (Every time when the accept* headers fill the tcp window, an
RTT time is consumed. This effect is terrible when the TCP slow start is in
progress. Reducing the bytes sent per request results in some performance gain
allways.) When direct connection used between the client and the origin server,
the state parameter of keep-alive is a good place for such optimisation, but
look at this configuration:
client1 --- proxy --- server1
client2 ---       --- server2
.......
ClientN ---       --- serverM
M<=N
If the proxy is a caching proxy, the proxy - server connection will be used less
frequently, than the client - proxy connection.
If there are multiple clients accessing the same orig server, the proxy may want
to multiplex requests from different clients in one server connection. For this
case the keep-alive header isn't the best place to carry the accept*
configuration. (Graphical browsers have two set of accept* headers, one for web 
pages, one for inlined images. This is a second objection to
keep-alive: state=....) The accept-signature (or accept-hash) proposed by Larry
Masinter looks better.
If the WG likes the accept-signature idea, then there is no need for keep-alive.
[To let the accept-signature idea to go forward, somebody should gather
statistics on accept* to see, how often we should expect collisions. If the
probability of such collisions (different sets of accept* having the same
signature) is really small, then we can accept the accept-signature idea.]

Andrew. (Endre Balint Nagy) <bne@bne.ind.eunet.hu>

Received on Friday, 13 October 1995 22:21:51 UTC