Re: Cache-control: max-age, uh, where?

This really isn't much of a hot button for me, but I guess its worth
putting some effort into reaching a common understanding.

   cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
   Date: Wed, 13 Sep 1995 23:15:26 -0400
   From: Roy Fielding <fielding@beach.w3.org>
   Content-Type: text
   Content-Length: 894

   >The argument against it didn't take the request-header usage into
   >account, because that doesn't overlap with other functionality in a
   >non-orthogonal way.  My main problem with it is its redundancy with Expires,
   >(as a response header) with which it appears to have almost identical
   >semantics, though what happens if they are both present is not
   >well defined.

   Actually, that is a problem with Expires in general and does not
   affect the functionality of max-age.

I don't quite catch your drift here.


   In fact, both headers can exist
   without any confusion whatsoever, since they are not redundant.

Clearly something is unclear, because on my reading, except for the
difference in the effect on a non-"intermediary" server, the effect is
identical.  In what other way do the two *response* headers
	Expires: <now + n seconds>
and
	Cache-control: max-age=n
differ?

In both cases isn't the meaning that before <now + n seconds> a cache
may serve the document without validating it, and after <now + n
seconds> the cache must validate the document before serving it?
("validate" means fetch a new copy or, with GET if-modified-since, 
receive an indication that the present copy is the newest available).

Are they or are they not supposed to cause the same behavior in proxy
caches, and if not, how not? I've read over the spec page on both
several times, and except for the wording that max-age affects a
caching intermediary, I can see 0 difference.  I also do not
understand the purpose of defining max-age to operate only on
"caching intermediaries" even though the Cache-control directive is
in general defined to operate on "all caching mechanisms along the
request/response chain."

If
	Expires: <now + n seconds>
and
	Cache-control: max-age=m

where m != n, both appear in a response, which "wins"?  This is the
only functional question, aside from the confusion engendered by
having two mechanisms that do the same thing.  As long as how it works
is defined, I don't suppose it makes much difference one way or the
other if they both exist.  But it must at least be defined.

Sorry if I'm missing something obvious in the definition of these
headers, but my guess is that if it confuses me, I am not the only one
who will find it confusing.

   Expires should be as it was intended for the CERN server or be
   removed from the spec entirely.  

    ....Roy T. Fielding  Department of ICS, University of California, Irvine USA
			 Visiting Scholar, MIT/LCS + World-Wide Web Consortium
			 (fielding@w3.org)                (fielding@ics.uci.edu)

What was Expires intended to be for the CERN server?

--Shel

Received on Wednesday, 13 September 1995 21:47:05 UTC