- From: Koen Holtman <koen@win.tue.nl>
- Date: Tue, 30 Apr 1996 12:57:42 +0200 (MET DST)
- To: hallam@w3.org
- Cc: jg@w3.org, http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
hallam@w3.org: > >[Warning... Philosophy flame comming] > >Summary of note, this is not the time to open up this can of >worms. The wording in the spec may appear broken but its best not to >change it this close to the deadline. The wording is broken, and I suggest it is mostly _changed back_ to the wording in the Monday 1.1-02 draft. Specifically: resource -> a thing identified by an URI, as in 1.1-02 entity -> defined by Jeff's wording for entity instance resource entity -> defined by Jeff's wording for entity/the the current wording for resource entity (THESE THINGS DO NOT NEED TO HAVE THEIR OWN URIs!) (I'd rather have a different word than resource entity. What about `entity source'? The idea is that the entity source can generate both full and range entities. Range entities add additional complexity which is not reflected well in the new terminology definitions.) generic resource/varying resource -> (as in my Vary header section:) A resource is currently generic if it currently includes a Vary or Alternates header in its 200/206 responses. (Note: philosophically speaking, the above is an empirical definition: generic resources are defined by _the observable things they do_, not by what they _are_ or _mean_. This may seem a bit circular to neo-Platonists, but it is the only way to stay clear of the philosophical problems Phill has described with so much detail. It is OK to add some lines to the definition about what genericity would mean in a Platonic sense, but only to help implementers form a mental model, not as a way of defining the protocol feature.) (Note: as I said in my previous message: genericity is a _binary_ predicate in the 1.1 spec. The words about `successively specific resources' are confusing and must be deleted. As Roy also noted, allowing time as a dimension of genericity makes the terminology useless for 1.1) A generic resource has as set of resource entities associated with it, which can change contents though time. A generic resource can at any point in time change into a specific resource. This change will be reflected by the absence of Vary and Alternates headers in subsequent responses. specific resource/plain resource -> A resource is currently specific if it not currently generic. .... A specific resource can at any point in time change into a generic resource. This change will be reflected by the presence of a Vary or Alternates headers in subsequent responses. negotiable resource -> is the same as a generic resource. Use of this term is must be avoided everywhere except in the content negotiation section. (Note to Larry Masinter: It is true that 1.0 servers manage to provide `negotiation' by using `dynamic resources' that always generate a non-cachable response tailored to the request headers on the fly. Such dynamic resources include an Expires: <yesterday> header (or omit Last-Modified headers or use access authentication) to avoid caching, but they do not send a Vary or Alternates header, so they cannot be called specific/varying resources, and thus cannot be called negotiated under 1.1.) variant -> THIS WORD IS NOT NEEDED AND BEST DELETED. (a variant can be interpreted as a container which successively contains related resource entities.) My analysis of why we do not need the term variant: we introduced this term to talk about variant-IDs. However, the only semantics associated with variant-IDs is that they can be used for cache replacement. Therefore, you can rename `variant-ID' to `replacement-key', which eliminates the problem of having to talk about what a variant is. Rewriting the spec to never use the word `variant' is not that hard. Note that I managed not to use it in the Vary header section. All 1.1 mechanisms can be described without referring to the concept of `a container which successively contains related resource entities'. Going through the whole spec for the purpose of removing the word `variant': 3.14 Variant IDs Variant-IDs are used to identify specific entities (variants) of a varying resource; see section 13.8.3 for how they are used. variant-id = quoted-string Variant-IDs are compared using string octet-equality; case is significant. can be renamed to replacement keys: replacement-key = quoted-string 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 can be renamed to validator-sets. 13.7.5 SLUSHY: Scope of Expiration HTTP/1.1's expiration model is that as soon as any variant of a URI becomes stale, all variants becomes stale as well. Thus, _freshness_ applies to all the variants of URI, rather than any particular variant. Dates and expires etc. apply to any cached variant that a proxy might have with a URI and not just the one particular entity. EEK! 13.7.5 is plain wrong, and must be deleted. Why did I not find this before? 13.8 Caching and Content Negotiation The HTTP content negotiation mechanism interacts with caching in several ways: . A varying resource (one subject to content negotiation) may be bound to more than one entity. Each of these entities is called a _variant_ of the resource. ^^^^^^^ replace variant by `resource entity' or whatever term you come up with. Replace variant-ID with `Cval header value' most of the time. Note that only `Cval header values' which include `variant-IDs' can be sent in `Unless-<something>' headers for requests on varying resources. 13.12 SLUSHY: Cache Keys Delete completely, except for 13.12.4. 13.20 Cache Replacement for Varying Resources Use the text I posted on the list recently, with every `variant-ID' replaced by `replacement-key'. Koen.
Received on Tuesday, 30 April 1996 04:04:45 UTC