- From: Amos Jeffries <squid3@treenet.co.nz>
- Date: Tue, 09 Oct 2012 13:49:43 +1300
- To: <ietf-http-wg@w3.org>
On 09.10.2012 09:28, James M Snell wrote: > For review and comment... > > http://www.ietf.org/id/draft-snell-link-method-00.txt > > Updated definition of LINK and UNLINK, taking RFC5988 into > consideration > and using language consistent from current httpbis draft (read: > shamelessly > and remorselessly lifted). > > Comments and feedback definitely welcome. > > - James Given that LINK/UNLINK contain the active parameters for change in Link headers instead of URL I don't believe they are normally cacheable as stated in the draft. Only when a proxy cache is performing conditional requests to the upstream server does cacheability make sense. For example; two LINK requests for the same URL with different Link header content. Request A and request B. Request A can happen and have a response. However request B, should not (MUST NOT?) be responded to by a proxy cache using a cached response to request A since the intended server/target of LINK will never receive the (different) request-B Link headers. It is likely that the request B will have created a different response body to request A anyway (use-case being a registry index of some sort, ie torrent seeders list, library index, database table content) - making caching the most undesirable of outcomes. The same use-case applies to UNLINK headers and responses. Also the referenced part6 draft states " A cache MUST write through requests with methods that are unsafe (Section 5.2.1 of [Part2]) to the origin server; i.e., a cache is not allowed to generate a reply to such a request before having forwarded the request and having received a corresponding response. " So the non-conditional cases passing the request through and waiting for a new 2XX response before responding makes caching the earlier response useless. For the browser/client cache situation the response would seem to be only needed to update the client state information then can be discarded. On the other hand ... If the proxy cache were to relay the request but add conditional headers. Making request-B potentially not only make the LINK/UNLINK update but query whether the cached 2xx response is suitable for sending to the client. NP: only the If-Match/If-None-match conditionals make since for this case, the time-based ones would block a clients unconditional change. That raises the question of whether, being idempotent the server should respond with "304 Not Modified" in all cases where the LINK/UNLINK was not performed due to the link already existing (or not). 204 seems to be a step in that direction while retaining the 200 semantics, but 204 *replaces* a 200 representation with 'nothing' - whereas 304 would simply be a no-op success. Amos
Received on Tuesday, 9 October 2012 00:50:10 UTC