Re: Etag-on-write, draft -04

> On Nov 28, 2006, at 4:27 PM, Julian Reschke wrote:
>
>> The Xythos client always assumes that content isn't rewritten. And  
>> if no ETag is returned, it uses the Last-Modified date as cache  
>> key. So it's already broken with respect to servers that have to  
>> rewrite.
>>
>> Roy never made a proposal, and didn't answer when asked for  
>> clarification/confirmation.

I don't like repeating myself over and over again just because you
want to add an unnecessary feature to HTTP.

My opinion hasn't changed -- the extension is completely unnecessary,
RFC 2616 already defines what sending an etag on PUT means,
and every single relevant case can be handled by a simple clarification.

My proposal was:

     require that ETag in a response to PUT means that the client
     can use that entity tag in future conditional requests (that
     includes IMS, If-Match, and Range-based conditional requests).

There is absolutely no reason for the server to send an ETag on a PUT
response if the server does not intend to support that functionality.
I am quite sure that none of the server vendors will care about the
addition of that clarification provided that the requirement is
properly stated as an interface constraint and not an implementation
constraint.

OTOH, the mechanism for how the server "stores" the representation,  
whether
or not it is stored byte-for-byte, and how a server might otherwise  
manage
to accomplish the feat of handling a conditional request without  
preserving
byte-level equality is none of our business and should never appear  
in an
IETF specification regarding HTTP.

My proposal does solve every single case that has been described so far,
including repeatable server-modifications such as normalization, and
works with existing clients.

In regard to Apache mod_dav's use of weak entity tags, that is a  
separate
issue and can be fixed without changing HTTP at all.  It is merely an
implementation quirk having to do with the way mod_dav reuses the
file space as a storage mechanism (and thus a separate handler for GET).
I can very easily turn it off, as can anyone with access to the config
files.  The right solution, though, is to use a property-based back-end
and store the MD5 on write, which would allow the weak designation to be
removed and actually solve the real problem of clients wanting a strong
etag returned from PUT.  Patches are welcome.

....Roy

Received on Thursday, 30 November 2006 22:51:18 UTC