- From: Boris Nikolaus <boris@cs.tu-berlin.de>
- Date: Mon, 23 Jan 2006 15:34:05 +0000
- To: ietf-http-wg@w3.org
RFC2616 states that
the Age response-header field conveys the sender's estimate of the
amount of time since the response (or its revalidation) was
generated at the origin server
but that
the Date general-header field represents the date and time at
which the message was originated,
leaving out the behaviour for a proxy after a revalidation for the
Date header. This leaves two possibilities:
a) The Date represents the time of the original message:
This is the behaviour of squid 2.5, but looks very weird for
some objects to me:
Assume an object has "Cache-Control: max-age=60" and the object is
queried periodically using a proxy:
t+0 Object is requested the first time, proxy requests it from
the web server and forwards the response:
-> Date: D, no Age
t+25 Object is queried again, proxy delivers it from its cache:
-> Date: D, Age: 25
t+50 Same as above:
-> Date: D, Age: 50
t+75 Object reached its max-age, proxy sends a conditional
request (If-Modified-Since) to revalidate the object;
web server returns "304 Not Modified" and Date: D+75,
but as chosen for this case, the web server returns
-> Date: D, no Age
because D is the creation date of the cached object and
no time has been spent since the revalidation.
t+100 Object is queried again, proxy delivers it from its cache:
-> Date: D, Age: 25
What distracts me mostly is that "Date" + "Age" is not monotonic in
this case because I would like that "Date" + "Age" is an estimate
for the current time of the clock of the web server (apart from
network delays).
b) The Date represents the time of the original message or last
revalidation:
This would return
t+0 -> Date: D, no Age
t+25 -> Date: D, Age: 25
t+50 -> Date: D, Age: 50
t+75 -> Date: D+75, no Age
t+100 -> Date: D+75, Age: 25
which looks much more convenient to me, but if the object contains
an Expires response header, this has to be updated, too, whenever
an object is revalidated and thereby the Date header replaced.
Any comments which version behaves "better"/which behaviour is intended
by the standard? Are there any additional side effects of the two cases?
Boris.
Received on Monday, 23 January 2006 18:20:09 UTC