- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Fri, 20 Dec 96 11:13:07 PST
- To: Anselm Baird-Smith <abaird@w3.org>
- Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Jeffrey Mogul writes: > After thinking about it for a while, and making up a table of all > the possible combinations.... Anselm Baird-Smith writes: I think it would help a lot to have this table, before actually going into deeper discussions. Actually, I did create the table before sending that message, but I thought the message was already pretty long without it. Also, the table needs some explanatory notes, which I have now added. See below. BTW it would be nice if this table also contained the warnings to be emitted for each cases along with the conditions under which these warnings should be emitted. I'll take you up on your offer to help ... if you can figure out how to add these to the table, please do so. It would be nice if it still fits in a 72-column fixed-width format, because then I can stick it into an Internet-Draft without any glitches. -Jeff Explanatory notes: The leftmost column shows the Cache-control headers emitted by the origin server. In all cases, I assume that the response is marked as "revalidatable" in some way, such as the presence of an entity-tag or last-modified date. The rest of the table is divided into two major columns, depending on whether the cache involved is at an end-client system, or a shared proxy cache. (We can probably treat a non-shared proxy cache as being a sort of "distributed" implementation of an end-client cache.) Each of the major columns is divided into three minor columns, showing the action to take (1) if the response is fresh (2) if the response is stale, and the cache is being strict about revalidating stale responses (3) if the response is stale, and the cache is not being strict about revalidating stale responses The table assumes that there is only one kind of "max age" for a response, set by a max-age directive (or, equivalently, by an Expires header). If we were to introduce a proxy-maxage directive, the table would need some more rows, and in the Proxy Cache columns, the test for "freshness" would have to account for this new kind of "max age". In the table entries, NA means "not applicable" (i.e., can't happen) use means "use entry without revalidating" check means "use entry after revalidating" ignore means "use entry without revalidating, even if stale" Site: Client cache Proxy Cache entry state: fresh stale stale fresh stale stale policy: strict loose strict loose ----------------------------------------------------------------------- In current HTTP/1.1 spec: ----------------------------------------------------------------------- Age limit from server =========== No max-age use NA NA use NA NA max-age > 0 use check ignore use check ignore max-age = 0 NA check ignore NA check ignore must-reval use check check use check check +max-age > 0 must-reval NA check check NA check check +max-age = 0 proxy-reval use check ignore use check check +max-age > 0 proxy-reval NA check ignore NA check check +max-age = 0 ----------------------------------------------------------------------- Missing from HTTP/1.1 spec: ----------------------------------------------------------------------- Age limit from server =========== No max-age use NA NA check NA NA max-age > 0 use check ignore check check check max-age = 0 NA check ignore NA check check ----------------------------------------------------------------------- If we added a proxy-mustcheck directive, those three rows would become: ----------------------------------------------------------------------- Age limit from server =========== No max-age use NA NA check NA NA +proxy- mustcheck max-age > 0 use check ignore check check check +proxy- mustcheck max-age = 0 NA check ignore NA check check +proxy- mustcheck ----------------------------------------------------------------------- Missing from HTTP/1.1 spec, but probably not useful: ----------------------------------------------------------------------- Age limit from server =========== No max-age check NA NA use NA NA max-age > 0 check check check use check ignore max-age = 0 NA check check NA check ignore
Received on Friday, 20 December 1996 11:21:54 UTC