Hey Curt,

On 16.09.2009, at 07:38, Curt Arnold wrote:
The spec appears to be walking a fine line with respecting behavior of some HTTP 1.0 caches that treated expires in the past as equivalent to no-cache. See section 14.9.3, where HTTP 1.1 caches are instructed to assume no-cache if they see an Expires date in the past without a Cache-Control header. CouchDB does send a Cache- Control, so we would not be affected by that.

Within RFC 2616, the description of the treatment of "Expires 0", the note in section 14.9.3 and section 14.18.1, all seem to acknowledge the use of Expires in the long past. RFC 2109 had this quote that indicated that at least in 1997, having a fixed Expires date in the past was a common pattern.
[snip]
In my testing (as mentioned in the bug report), max-age=0 was insufficient to prevent stale requests if subsequent reads occurred within the same second. I have not tested Expires == Date, but I think there is a possibility that some clients might still have a window where you can get stale depending on the client. Setting max- age=0 is clearly within the spec and would likely reduce the user experiences of conflicts due to stale data, but would not be sufficient to get the unit tests to work unless you added explicit waits.

Doh, you're right, and I got the role of the Expires header wrong. I've reopened the issue.

I don't have time for testing whether this actually works as you describe across all the major user agents. But as long as we're doing the right thing with respect to the HTTP spec, I think this is the way to go.

So, I stand corrected and retract my -1, and everything else I said based on my incorrect assertion :P

Cheers,
--
Christopher Lenz
  cmlenz at gmx.de
  http://www.cmlenz.net/


Reply via email to