- From: Koen Holtman <koen@win.tue.nl>
- Date: Fri, 12 Jan 1996 11:56:51 +0100 (MET)
- To: ddubois@rafiki.spyglass.com (Daniel DuBois)
- Cc: drtr1@cus.cam.ac.uk, fielding@avron.ICS.UCI.EDU, http-caching@pa.dec.com
Daniel DuBois:
>
>>>Okay, so what's the syntax?
>>
>>I suggset:
>>Vary = "Vary" ":" 1#varying
>>varying = field-name *( ";" parameter )
>>
>>field-name is the name of an HTTP header.
>>
>>parameter provides more information on how the resource depends on the
>>specified header. Example of intended parameter use (N.B. I'm not actaully
>>suggesting this)
>>Vary: Accept; type="image/gif"; type="image/jpg"
>
>I suggset:
>Vary = "Vary" ":" 1#varying
>varying = field-name
>
>unless you can describe to me what [; type="image/gif"; type="image/jpg"] is
>supposed to indicate and how behavior should change based on such
>paramters.
I would also like to know what this [; type="image/gif";
type="image/jpg"] is supposed to do. Isn't this getting close to an
URI header again?
With respect to
Vary = "Vary" ":" 1#varying
varying = field-name
I also have a problem: the custom (opaque) variant rating algorithm
used by the server may not just vary on the request headers. It may
also vary on the IP address of the client, on the current time, on
internal server state, etc.
I have a list of things that can be varied on in section 2 of the
known range negotiation draft
(http://www.organic.com/public/conneg/mail/0063.html).
Therefore, I propose the following vary header or field:
Vary = "Vary" ":" 1#varying
varying = field-name | "external-factor"
The inclusion of "external-factor" in the vary header or field means
that the response varies on something other than a request header.
I'm open to suggestions for a tag name better than "external-factor",
but I do feel that there definitely needs to be some way to express
this kind of variance.
A related issue: there are 8 combinations of presence of URI, Vary,
and Location (Content-Location) in responses, and we need to cover all
of them.
My ideas on this are as follows. I have listed all cases separately
to make discussion easier, the 1.1 document would of course cover all
cases in a more compact way.
** For 200 OK responses that include a response body **
(also for 20x OK-but-but-do-not-cache-if-you-are-a-1.0-cache responses
that include a response body)
200.1) No URI, no Vary, no Location:
- normal, un-negotiated response.
200.2) No URI, no Vary, a Location:
- ignore Location header
- see 200.1.
200.3) No URI, a Vary, no Location:
- opaque negotiation
- response body varies on things in the Vary header,
- but no `send-no-body-for' possible
200.4) No URI, a Vary, a Location:
- opaque negotiation
- response body varies on things in the Vary header,
- `send-no-body-for' possible
200.5) A URI, no Vary, no Location:
- server error, response can be passed on, but may not be cached
200.6) A URI, no Vary, a Location:
- transparent negotiation
- URI header does not vary on anything
- Location and response body are a variant given by preemptive
negotiation using the variants in the URI header
-`send-no-body-for' possible
200.7) A URI, a Vary, no Location:
- server error, response may be passed on, but may not be cached
200.8) A URI, a Vary, a Location:
- partly opaque, partly transparent negotiation:
- URI header varies on the things in the Vary header
- Location and response body are a variant given by preemptive
negotiation using the variants in the URI header
- `send-no-body-for' possible
** For 300 (use reactive negotiation) responses that do not include a
response body, as received by the user agent**
(proxies just pass on 300 responses)
300.1-4) No URI
- server error, response may be shown, but may not be cached
300.5) A URI, no Vary, no Location:
- do transparent reactive negotiation using the URI header
- URI header does not vary on anything
300.6) A URI, no Vary, a Location:
- as 300.5.
- If not capable of reactive negotiation, use the URI in the Location
header.
300.7) A URI, a Vary, no Location:
- do transparent reactive negotiation using the URI header
- URI header varies on the things in the Vary header
300.8) A URI, a Vary, a Location:
- as 300.7.
- If not capable of reactive negotiation, use the URI in the Location
header.
>Dan DuBois, Software Animal http://www.spyglass.com/~ddubois/
Koen.
Received on Friday, 12 January 1996 11:09:46 UTC