HTTP caching headers don't provide expected behaviour
-----------------------------------------------------
Key: COUCHDB-257
URL: https://issues.apache.org/jira/browse/COUCHDB-257
Project: CouchDB
Issue Type: Bug
Components: HTTP Interface
Affects Versions: 0.8.1, 0.9
Environment: Server: Ubuntu Hardy on x86. Client: Windows XP (32-bit).
Reporter: Vinay Sajip
Priority: Minor
The HTTP caching headers currently put out cause IE (for example) to not
display information correctly in Futon. It's easy to reproduce: I open windows
in Firefox and IE simultaneously, do an update using Firefox (e.g. add a new
document) and refresh the IE window. The updated document count is not shown.
If I clear the browser cache and try again, the updated information is
displayed. The HTTP header put out is
Cache-Control: must-revalidate
which seems to me insufficient - for IE, at least. Is there way of configuring
these headers, to for example
Cache-Control: no-cache
Pragma: no-cache
Expires: some date in the past, or the same value as the Date: header
Christopher Lenz has said about this that "This is due to extra-aggressive (and
against the HTTP spec) caching that IE does on XMLHTTPRequests. A patch would
need to do user agent sniffing to conditionally add the "cache: false"
parameter to the jQuery ajax() invocations in jquery.couch.js (and maybe
elsewhere). I wouldn't want to add this for all user agents, as it basically
circumvents any caching for AJAX requests (even for not-craptastically-broken
implementations), and thus would add quite a bit of unnecessary overhead."
To this, I would comment that I don't believe a patch to the client-side code
in Futon would be sufficient. There are other clients out there, some of which
will be on Windows and so by default use the (acknowledgely broken) Microsoft
stack. In my view it is more important to err on the side of correctness than
performance - so I believe the headers generated server-side need to change, as
well as perhaps Futon client-side changes.
I note that handle_uuids_req in couch_httpd_misc_handlers.erl uses the
no-cache/Expires scheme I mention.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.