- From: Jamie Lokier <jamie@shareable.org>
- Date: Thu, 14 Sep 2006 16:02:05 +0100
- To: Cyrus Daboo <cyrus@daboo.name>
- Cc: Yves Lafon <ylafon@w3.org>, Helge Hess <helge.hess@opengroupware.org>, HTTP Working Group <ietf-http-wg@w3.org>
Cyrus Daboo wrote: > Here is my take on what information is useful to a client: > > 1) Server does not re-write the content at all - client should be given the > ETag of the stored entity so that it does not have to download it in future > if it does not get re-written by someone else. > > 2) Server does a non-semantic change (e.g. adds unimportant whitespace, > re-formats, uses different XML namespace prefixes etc) - client should be > given the ETag of the changed entity plus an indication that there was a > non-semantic change. If the client cares about octet-equality it can then > download the modified resource, if not it can use the ETag as above. > > 3) Server does significant change to the resource - client should be given > the ETag of the new entity plus an indication that the resource was > changed. Why is that useful? Well if the client does decide to fetch the > re-written resource it will know, by comparing the ETag it got with what is > actually on the resource, whether any other entity has in the meantime > itself over-written the resource. The issue here is being able to > distinguish between a re-write done to MY resource (the one I put) as > opposed to a re-write done as a result of someone else's put or some other > action. That may or may not be useful information but I see no reason not > to expose it. > > CalDAV chose to solve the case of discriminating between (1) and (2)/(3) > together. So if a strong ETag is returned the client knows that (1) is > true, otherwise either (2) or (3) may be the case, but there is no way to > tell between them. > > So, for Julian's current proposal, I would like to see an additional > entity-transform-keyword to help discriminate between (2) and (3). Of > course what constitutes a 'non-semantic' change is not at all clear, and > will likely depend on the application and data type. So perhaps > entity-transform-keyword just needs to be extensible, and other specs can > extend it - the important point being that if the client sees a keyword it > does not know about it treats it as 'unspecified'. So CalDAV could declare > a 'CalDAV-unchanged' keyword that serves could use to indicate case (2). > AtomPub, XCAP etc could define there own. Each spec would have to be very > explicit as to what 'non-semantic' changes are allowed to the data. I like this. Promising generic keywords suggest themselves: encoding (for text/*), XML-whitespace, XML-syntax (whitespace, encoding, namespace prefix changes, collapse empty tags, reorder attributes, generic "&#..;", etc.), content-encoding ((re-)compression). -- Jamie
Received on Thursday, 14 September 2006 15:02:30 UTC