- 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