Proposal: Pragma min-age (Was:Re: A modest proposal)

Jeffrey Mogul:
>Time for a Principle:
>    Principle #1 of caching:
>	Caches should never introduce undetectable incorrectness.
>	Correctness always takes precedence over performance.
>

As discussed earlier on www-talk, if a sufficient number of service authors
keeps putting Expires: <yesterday> or Pragma: no-cache headers in responses
for frivolous reasons, a web cache administrator may want to (selectivelty)
`tune' the cache to ignore these headers (even if this means that the cache
does not conform to http 1.x anymore).

Such a `tuned' cache would introduce incorrectness, so a corollary of the
above principle is:

 If a cache does not honor requests _not_ to cache as in http 1.x, there
 should be a way for _origin servers_ to detect it, so that they can refuse
 to serve dynamic documents through these caches (or embed big warning
 messages in these documents).

So we could introduce yet another pragma:

Pragma: min-age=<delta-seconds>

`Tuned' caches, either in user agents or in proxies, should add
this header to the _request_ headers.  Semantics of the header:

- if it is absent: the cache promises to always honor the http 1.x response
  headers related to cache control (Expires and Pragma in 1.0 and 1.1).

- if it is present:  the cache does only guarantee to honor the http 1.x
  response headers related to cache control (Expires and Pragma in 1.0 and
  1.1) _after_ <delta-seconds> seconds after the end of the http
  connection.  In the time before that, the cache may choose to serve
  the cached entiry without prior validation with the origin server.

Maybe a special case, 

Pragma: min-age=session

is also needed to allow user agents to express that an entity is cached
(without ever sending IMS or head requests to the origin server) until the
end of the session (where the exact meaning of `session' is left undefined).

Adding Pragma: min-age to a http 1.x spec would make `tuning' legal under
http 1.x.  I think any http spec should strongly discourage tuning.

Tuning is with us now: if it has disappeared in, say, 2 years, the http x.y
spec written in 1997 could make Pragma: min-age an obsolete header.

Koen.

Received on Friday, 18 August 1995 03:08:45 UTC