We have made some updates to the Memento extension and we have also
written a fix to perform datetime content negotiation on transcluded
templates. Details can be found in the wiki page for the extension
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
_______________________________________________
Wikitech-l mailing list
Wikitech-l(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l