W3C home > Mailing lists > Public > ietf-http-wg-old@w3.org > May to August 1995

Re: Expires, Last-Modified, Pragma: no-cache etc.

From: Roy Fielding <fielding@beach.w3.org>
Date: Wed, 16 Aug 1995 15:07:33 -0400
Message-Id: <199508161907.PAA02986@beach.w3.org>
To: Lou Montulli <montulli@mozilla.com>
Cc: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
>I recently changed netscape to interpret "Pragma: no-cache" and not
>cache the object.  This is slightly different than a "Expires" header
>because the object will not even be cached for history navigation.
>(Documents that are expired are still shown when traversing the session
>history).  Haveing the client interpret "Pragma: no-cache" lets servers
>tell the client that this information is highly sensitive or volitile
>and should not be cached in any way.

Hmmm, that's a different interpretation than what I perceived from
the third-hand descriptions of what this feature might do.  It really
is better to hear about protocol experiments from the source.

Something that the WG needs to keep in mind is that what I write in
the *draft* specification is what I believe to be the abstract and
specific semantics of each feature in the protocol.  I am counting
on people to correct me when what I write does not match their own
interpretation of the protocol.  Since I've developed my own client
library, client, and small portions of two servers, most of the time
I do get it right, but certainly not all of the time.

What I wrote in Draft 01 for the Pragma field's abstract semantics
may be wrong.  It is based on my interpretation of the meaning of
the current "no-cache" request header, and I merely extended that
semantics to the other directives.

   Pragma directives must be passed through by a proxy, regardless of 
   their significance to that proxy, since the directives may be 
   applicable to all intermediaries along the request/response chain. 
   It is not possible to specify a pragma for a specific proxy; 
   however, any pragma directive not relevant to a proxy should be 

Instead of "intermediaries", we could say "recipients", and the following
   Pragma directives do not apply to the end-points of a 
   request/response chain. For example, a user agent's internal (non-
   shared) cache and/or history mechanism should ignore all pragma 
   directives in received messages. Similarly, pragma directives are 
   not applicable to the origin of a resource, though they may be 
   applicable to a server's internal response cache.

could be replaced with

   Pragma directives only apply to recipients that implement features
   corresponding to the directive's semantics.  For example, a no-cache
   directive tells the recipient not to make use of its caching mechanism
   in satisfying the request when it occurs in a request header, or in
   storing the response when it occurs in a response.  Pragma directives
   are also unidirectional in that the presence of a directive in a
   request does not imply that the same directive be given in the response.

We can then add a new directive to cover the semantics of a response
that must not be shared by multiple users.  We could call it "private",
but I am afraid that this would also imply privacy, which it shouldn't.
Unfortunately, there does not seem to be an antonym for "shared" or
"communal", so how about

   Pragma: non-shared

Er, on second thought, maybe we should just use "private"...

 ....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)
Received on Wednesday, 16 August 1995 12:50:08 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:40:14 UTC