Re: Location Proposals

Koen Holtman writes:
 > 
 > I guess we need a term for the practice of keeping an expired response
 > in cache memory to facilitate future conditional GET gets.  What about
 > `conditionally cached'?
 > 
 > Hmm.  I may be on to something.  The spec could use language like
 > `Pragma: no-cache instructs the cache not to unconditionally cache the
 > response.  The response may however be cached conditionally.'
 > 
 > >--Shel
 > 

According to what Jeff Mogul just recently said, "expires:
<yesterday>" accomplishes this "conditional caching".  The cache is
allowed to serve an expired, cached document if it receives a 304
response on a conditional GET to re-fetch the document, but it would
definitely have to issue a new conditional GET on each request.
(Unless 304 is allowed to update header information, as I think Andrew
suggested).

This further distinguishes Expires: <yesterday> from Cache-control: no-cache
(or Pragma).  In the latter case, the document can never be stored in
a cache.  In the former, it can be stored but only served subsequently after
issuing a conditional GET and receiving a 304.

I think this is a good interpretation, but that the spec can easily be
misinterpreted.  It says, in 8.13, "Caching clients, including
proxies, must not cache this [stale] copy of the resource beyond the
date given, unless its status has been updated by a later check of the
origin server."  Does that mean that the later check updates the
cache's idea about the existing copy, so, e.g. it is no longer
expired?  Or does it mean the cache can serve a stale document after
checking to see if there is a newer version?  The spec does not
clearly state that the cache is allowed to serve a stale document,
though it doesn't clearly state that it can't, either.  It seems
ambiguous what happens if the cache checks the status of the document,
and it is found to still be expired -- in other words there is no
later version.  It seems very sensible that if the origin server says
"I don't have a more recent version" the cache should return the
version it has, but this is only indirectly implied by the spec, not
clearly stated.  And though the language can be interpreted to mean a
cache can hold a stale document, it can also be interpreted to mean a
cache must throw out a stale document if it checks the status and
finds out that it has not been updated.

--Shel

Received on Tuesday, 5 September 1995 20:23:25 UTC