- From: Roy T. Fielding <fielding@avron.ICS.UCI.EDU>
- Date: Fri, 09 Feb 1996 17:42:33 -0800
- To: jg@w3.org
- Cc: http-caching@pa.dec.com, conneg@organic.com
I certainly won't argue against reducing header bytes. However,
I think this is making some incorrect assumptions.
> Any scheme that uses lots of bytes will fail in the general market,
> as a result, and this is the experience already observed by Netscape,
> which has had demonstrably better performance than Mosaic did (partially
> because of Mosaic's incredibly stupid accept header behavior) by observing
> the latency problems caused by long headers, and working to fix this.
Yes, but that is a problem with sending 1k of header fields on every
single request, regardless of the negotiability of the resource. Since
far less than %0.01 of all URLs are negotiable in content, this is a
bum deal.
However, the notion of including variant information in the URI
(or any) header field applies only to *responses* that *are negotiable*.
In those rare cases, it is worthwhile for the server to send that data.
I too would prefer a compact form, but it isn't going to invent itself.
We may be better off just defining a form that works, and then work
on tokenizing it for the next generation.
Something we have to keep in mind is that there are only three ways
to do negotiation in HTTP:
1. Never [not really an option]
2. Preemptive
The user agent tells the server about what it is capable of
accepting. The server selects the variant that best matches
what the user agent claims to be its capabilities.
[I claim that this is a non-tractable problem because
it requires information on both what the UA will accept and
how well it accepts it in order for the server to make the
correct decision].
3. Reactive
The user agent makes the request for the resource and the
server responds with the available variant information;
the user agent can then choose which one is "best" according
to its own capabilities. The variant information may be
supplied via a separate entity (e.g., a 300 response) requiring
a request delay, inside the response data (e.g., conditional HTML),
or as a supplement to the "most likely" response (requiring an
extra request only if the user agent decides one of the other
variants would be better).
Whether or not there exists something like a Variant-ID is irrelevant
to the above categories, and thus will not save bytes regardless of
how compact it might be. What it may provide is a more efficient
mechanism for cache updates when preemptive negotiation is used,
but the cost of preemptive negotiation *on every request* will far
outweigh any benefits of Variant-ID, which is the whole point for
using a variant list in the response.
In any case, both preemptive and reactive negotiation suffer from
our inability to communicate the actual characteristics of the
variant dimensions (i.e., how to say it supports HTML tables
but not the INSERT element) and so somebody is going to have to
come up with a solution to that problem before we can say anything
about which method uses fewer bytes.
...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 Saturday, 10 February 1996 02:08:56 UTC