On Nov 12, 2009, at 3:19 PM, Platonides wrote:
2.6. The caching issue is a general problem arising from introducing Memento in a web that does not (yet) do Memento: when in datetime content negotiation mode all caches between client and server (both included) need to be bypassed. As described in our paper, we currently address this problem by adding the following client headers:
Cache-Control: no-cache => to force cache revalidation, and If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT' to enforce validation failure
We very much understand this is not elegant but it tends to work ;-) .
The caching issue is IMHO the bigger problem in your approach using the new header. Disabling cache on the request kind of work (although not in the long term), but you also need to disable caching at the server, so when someone accessing by your same proxy (ignorant of X-Accept-Datetime) to the current page doesn't get the cached page you were served earlier.
Agreed, of course, that our current cache fix is a temp solution.
Not sure what you mean by the above remark, but it is totally fine to cache the current page in mediawiki because the history pages are not served from the URI of the current page, neither by our plug-in nor in Memento in general (see http://www.mementoweb.org/guide/http/local/). Rather, a X-Datetime-Accept request is redirected (302 Found) to an appropriate history resource that has its own URI (with title and oldid in case of mediawiki). And, hence, even those history pages can be cached by mediawiki equipped with the memento plug-in.
RFC 2145 states very clearly that "A proxy MUST forward an unknown header", but in your case it'd have been preferable that the header wasn't forwarded if the proxy isn't memento aware.
Which leads us to another issue, which is that it seems your server implementation doesn't "acknowledge" memento, so given a response to a X-Accept-Datetime, you don't know if what you're getting is the version you requested or the current one (because the server ignored it). It can be as simple as requiring a Last-Modified <= X-Accept- Datetime on Accept-Datetime responses (that would allow the server to explicitely tell since when is it valid), but extended to all response codes.
Actually, have a look at http://www.mementoweb.org/guide/http/local/ . You will note that the following response header is always included:
X-Archive-Interval: {datetime_start} - {datetime_end}
This allows a client to understand he received a history resource. The values to use are the start datetime and end datetime for which the server has representations for the the URI at hand.
Our plug-in implements this for mediawiki. Our proxy can't do this.
Cheers
herbert
== Herbert Van de Sompel Digital Library Research & Prototyping Los Alamos National Laboratory, Research Library http://public.lanl.gov/herbertv/ tel. +1 505 667 1267