- From: Koen Holtman <koen@win.tue.nl>
- Date: Tue, 23 Apr 1996 22:10:04 +0200 (MET DST)
- To: fielding@avron.ICS.UCI.EDU (Roy T. Fielding)
- Cc: koen@win.tue.nl, mogul@pa.dec.com, http-caching@pa.dec.com
[Note for the reader: a discussion of a simplification to the current draft spec follows.] Roy T. Fielding: > >> Proxies will have to generate variant-IDs like >> "http://other.org/xx.gif" using a cached Alternates header sometimes, >> this is why I do not want variant-ids to be tokens. If they were >> tokens, we would need horrible string-to-token conversion rules in the >> content negotiation spec. > >Proxies must not generate variant-IDs -- there is no way that would >work in a system where the client is not always required to use the >same set of caches. I think we are are still some misunderstandings between us. I never proposed that proxies under plain 1.1 would be allowed to invent variant-IDs from scratch. The construction of variant-ids by proxies would be only allowed according to rules in the future content negotiation specification, and of course all proxies would be obliged to generate the same variant-ID that the origin server would generate. Here is what I am saying: - We currently have two mechanisms for use with If-Invalid and varying resources in the spec: mechanism 1: 3.15 Validator Sets Validator sets are used for doing conditional retrievals on varying resources; see section 13.8.4. validator-set = 1#validator-set-item validator-set-item = opaque-validator 13.8.4 Use of Selecting Opaque Validators If the origin server prefers not to provide variant-IDs, it MAY at its option use the _selecting opaque validator_ mechanism. A selecting opaque validator is an opaque validator whose value is unique across all variants of a resource. If the origin server cannot generate opaque validators that are guaranteed to be unique across all variants of a varying resource, it MUST NOT send any opaque validators for that resource. mechanism 2: 3.16 Variant Sets Validator sets are used for doing conditional retrievals on varying resources; see section 13.8.3. variant-set = 1#variant-set-item variant-set-item = opaque-validator ";" variant-id - Associated with these are two separate cases for the If-Invalid header and two separate rules for cache replacement. - If I understood you correctly in the past, you have expressed concerns that this is unnecessarily complex, and that we should just require there to be a variant-id if If-Invalid is to be used. - In the past, I have not been happy with a requirement to include variant-IDs if If-Invalid is to be used. I feared we could paint ourselves into a corner, content-negotiation wise, with this requirement, because this means that caches constructing pre-emptive responses on behalf of the origin server must sometimes do this by taking an earlier reactive response and adding a variant-ID. - Now, after having thought some more about this, I feel reasonably safe with the requirement that there always must be a variant-id if If-Invalid is to be used, as long as the variant-id is a quoted-string, not a token. - To summarize, I propose the following: - variant-IDs are quoted-strings - all responses from varying resources, whether they use Vary or Alternates, SHOULD include variant-ids - if a response from a varying resource does not include a variant-id, the resource author may not assume that caching services will be provided for the response. - When using If-Invalid in requests on on varying resources, only the Cval: header values of cached responses with variant-IDs can be included - Cache replacement (throwing old entity instances out of cache memory because fresher ones that replace them are received) happens using variant-ids, there is no talk about Content-Location headers - Plain 1.1 proxies are never allowed to add variant-IDs to cached responses which do not have them, but caches operating under a future content negotiation specification are allowed to construct the same variant-ID the origin server uses when constructing a 200 response out of separately cached components on behalf of the origin server. - If we do it this way, we can delete the sections 3.15 Validator Sets 13.8.4 Use of Selecting Opaque Validators and simplify the sections 10.48 If-Invalid 10.49 If-Valid 13.12 SLUSHY: Cache Keys 13.20 Cache Replacement for Varying Resources One could even convincingly argue that *not* doing this would make the protocol too complex. On the down side, if we do this, implementations of transparent content negotiation (defined by a future spec) will become slightly more complex, and slightly more bytes will be sent over the wire. Now, if you agree to the changes outlined above, and if Jeff agrees too, I would feel safe in drafting the required edits in private e-mail with Jeff and in asking Jim Gettys to perform the edits. > I suppose it makes just as much sense to have >quoted-strings to variant-ids as it does for change-indicators. Yes. > >The entire caching section will need to be rewritten to use >EID and entity-id terminology. I consider this to be orthogonal to the variant-ID issue above. >......Roy Koen.
Received on Tuesday, 23 April 1996 21:05:33 UTC