Query string cacheability

One of the things that I did in the big caching rewrite was to remove the text about the effect of query strings on cacheability:

> Section 13.9
[...]
> 
>    We note one exception to this rule: since some applications have
>    traditionally used GETs and HEADs with query URLs (those containing a
>    "?" in the rel_path part) to perform operations with significant side
>    effects, caches MUST NOT treat responses to such URIs as fresh unless
>    the server provides an explicit expiration time. This specifically
>    means that responses from HTTP/1.0 servers for such URIs SHOULD NOT
>    be taken from a cache.

replacing it with, in p6 2.3.1.1:

>    [[REVIEW-query-string-heuristics: took away HTTP/1.0 query string
>    heuristic uncacheability.]]

Looking at this with somewhat fresh (but also a bit sleepy) eyes, I think we can re-introduce this text, but wonder if we need the last sentence; it's somewhat of a non-sequitor, AFAICT, since RFC1945 had Expires to determine an explicit expiration time, and anyway it should probably say "origin server," which as discussed before is sometimes difficult to tell, given the lack of Via support in many intermediaries.

I propose we address this by changing the beginning of 2.3.1.1 to:

"""
   If no explicit expiration time is present in a stored response that
   has a status code of 200, 203, 206, 300, 301 or 410, a heuristic
   expiration time can be calculated.  Heuristics MUST NOT be used for
   other response status codes. 

   Also, heuristic freshness MUST NOT be used for responses 
   to requests with a query component, because
   some applications have traditionally used queries on URLs to 
   perform operations with significant side effects.

   [ remaining paragraphs as in -09]
"""

Thoughts?


--
Mark Nottingham     http://www.mnot.net/

Received on Wednesday, 19 May 2010 12:32:15 UTC