- From: Henrik Nordstrom <henrik@henriknordstrom.net>
- Date: Fri, 07 Sep 2007 21:44:54 +0200
- To: Yaron Goland <yarong@microsoft.com>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>
- Message-Id: <1189194294.15185.54.camel@henriknordstrom.net>
On fre, 2007-09-07 at 10:11 -0700, Yaron Goland wrote: > This assumes that the client has an etag for the resource, in many of > our use cases they will not. So the if-none-match approach will often > fail. THe client will have an ETag for the resource IF the server is capable of providing one, and the client is interested in binding the requests together. If the client don't care, then there is no point of 209 either.. (just have the client do a plain GET after the modification, pretty much the same thing). If the server don't care then consider fixing the server. Providing an ETag for the resource is crucial in order to allow clients to build meaningful sequences conditional requests. PUT If-Match, only update if there hasn't been any changes. Returns the new ETag. GET If-Match, only get if there hasn't been any changes. GET If-None-Match, only get if there has been changes. Without ETag these sequences gets much harder, and ETag is already there, make use of it. Don't be scared off by the recent discussions about the meaning of ETag, those discussions is only related to a couple cornercases where the specifications is a little vague, and also WebDAV which do not fit into the HTTP object model very well which makes things quite a bit confusing when trying to map it to the HTTP object model.. And regarding pipelining, there is certain aspects of pipelining that one has to accept for the lifetime of HTTP/1.x: - Don't pipeline non-idempotent requests unless you know exactly what you are doing. It's very hard to know how far a pipeline got processed in case of error. - Don't pipeline non-idempotent sequences of requests (i.e. a GET followed by a DELETE of the same resource). There is no guarantee the requests will be executed in the exact same order. Reordering of requests may occur in hops along the HTTP forwarding path, or even in the requested server if it's a multi-threaded server. - Don't pipeline when average response latency is important. A large response will block the responses to the following requests.. Regards Henrik
Received on Friday, 7 September 2007 19:45:09 UTC