- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Tue, 02 Jan 96 16:37:24 PST
- To: "Daniel W. Connolly" <connolly@beach.w3.org>
- Cc: http-caching@pa.dec.com (http-caching mailing list)
> Volume-ID: <opaque string>
> Volume-version: <opaque-string>
> Volume-expiration: <date> (or maybe <offset in seconds>?)
I could handle a less verbose syntax:
Volume: <id> <version> <date-in-YYYYMMDDHHMMSSZ-format>
I certainly could live with shorter header names (VID:, VVer:, Vexp:)
but I think it might pay to keep these as separate headers, since
the Volume-version and Volume-ID have to be kept in the per-resource
cache entry, but the Volume-expiration need not be. Or maybe this
is easy enough to implement either way.
Date parsing: Just Say No!
Actually, I spent part of the weekend mulling this over, and I
think the use of absolute expiration dates (as opposed to "seconds
remaining") is a mistake. Not that I propose changing Expires:,
but rather to use a new header for the purpose of managing
cache "freshness" lifetimes.
Consider the problem of dealing with clock skew. Originally,
some of us (including me) thought that this could be handled
using the Date: header, but since that is generated at the origin
server, if there are multiple caches in the request chain (and
hence more than two clocks), this becomes quite tricky.
Think about how you would handle this case:
The origin server has a correct clock. On Monday,
it generates a response which is cachable until Friday.
The first cache has a clock that is a day slow (it
thinks it is Sunday), so it applies the clock-correction
algorithm and decides that the resource is safe to
cache until Friday according to its own clock, which
is Saturday in real life.
Later, the second cache requests the resource
from the first cache. How does it detect that the
second cache has a bogus clock? It can't use the
Date: header, since this came from the origin server.
And it cannot tell the offset between its own clock
and the origin server, because the Date: value could
be new or it could be many days old.
One have the caches rewrite the expiration dates, or include
more mechanisms for clock-deskewing. But it seems much simpler
and safer to express expiration as a number of seconds remaining,
which works as long as the inaccuracy in clock rates is reasonably
small. (I can easily set my watch to the wrong time; it's harder
to get it to tick at the wrong rate.)
-Jeff
Received on Wednesday, 3 January 1996 00:51:48 UTC