- From: Roy T. Fielding <fielding@gbiv.com>
- Date: Wed, 7 Sep 2016 10:22:54 -0700
- To: Mark Nottingham <mnot@mnot.net>
- Cc: Tom Bergan <tombergan@chromium.org>, HTTP Working Group <ietf-http-wg@w3.org>
> On Sep 6, 2016, at 8:42 PM, Mark Nottingham <mnot@mnot.net> wrote: > > >> On 25 Aug 2016, at 3:17 AM, Roy T. Fielding <fielding@gbiv.com> wrote: > ... >>> The cache can also store the response, but once the stream is closed, if that response is stale -- either because of the presence of one of the directives above, or some combination of `Expires`, `Age`, `Date`, and `Cache-Control`, it will need to be revalidated before use > ... >> FWIW, the mistake above is in saying "response is stale … it will need to be revalidated". >> >> An HTTP client is not required to revalidate a stale response. It only needs to do so when >> ensuring semantic transparency, which is something that user agents frequently don't do >> within the scope of a single session (instead, they make requests based on configuration >> or on the state of their own request processing). > > If you read the entire message, you would have seen: > >>> Note that HTTP does not put constraints on _how_ the application uses that response after it comes through the API or the cache; it might use it multiple times (e.g., an image might occur more than once on a page, or more than one downstream client might have made the request). It's just that this reuse isn't in the context of a HTTP cache's operation. > > You're correct that an HTTP *client* isn't required to revalidate a response, but a cache is. A cache isn't required to revalidate. Only a client revalidates, and only when it wants to do so. A cache never makes requests. A cache is only required to mark the response as stale. It is okay to have a cache that is 100% stale. ....Roy
Received on Wednesday, 7 September 2016 17:23:21 UTC