- From: Jake Archibald <notifications@github.com>
- Date: Wed, 27 Feb 2019 03:15:51 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/pull/853/review/208456993@github.com>
jakearchibald requested changes on this pull request. > @@ -1410,9 +1413,11 @@ Unless stated otherwise, it is unset. <dl> <dt>"<code>default</code>" <dd><a for=/>Fetch</a> will inspect the HTTP cache on the way to the network. - If there is a fresh response it will be used. If there is a stale response a conditional request - will be created, and a normal request otherwise. It then updates the HTTP cache with the response. - [[!HTTP]] [[!HTTP-SEMANTICS]] [[!HTTP-COND]] [[!HTTP-CACHING]] [[!HTTP-AUTH]] + If there is a fresh response it will be used. If there is a <a>stale response inside revalidate window</a> + and the request has the <a for=request>stale content mode</a> set it will be returned + immediately. If there is a <a>stale response</a> a conditional request will be created and the + response will update the HTTP cache. Otherwise, a normal network request will be issued. I still think this could be clearer (given it's non-normative). If we had definitions like: A **fresh response** is a response whose current age is within its freshness lifetime. A **stale-while-revalidate response** is a response that isn't a *fresh response*, but it's current age is within its stale-while-revalidate lifetime. A **stale response** is a response that isn't a *fresh response* or a *stale-while-revalidate response*. ("freshness lifetime" and "stale-while-revalidate lifetime" should be linked to something which defines those calculations) Then, the "default" can be described as: 1. If the HTTP cache contains a matching *fresh response* it will be returned. 1. If the HTTP cache contains a matching *stale-while-revalidate response* it will be returned, and a conditional network fetch will be made to update the entry in the HTTP cache. 1. If the HTTP cache contains a matching *stale response*, a conditional network fetch will be returned. 1. Otherwise, a non-conditional network fetch will be returned. > @@ -1526,6 +1531,10 @@ Unless stated otherwise, it is zero. which is "<code>basic</code>", "<code>cors</code>", or "<code>opaque</code>". Unless stated otherwise, it is "<code>basic</code>". +<p>A <a for=/>request</a> has an associated <dfn export for=request id=stale-content-mode>stale content mode</dfn>, +which is "<code>allow</code>", "<code>disallow</code>" or "<code>default</code>". Unless stated +otherwise, it is "<code>default</code>". If the only difference between "no-cache" and a SWR update request is the SWR update request doesn't add the `Cache-Control: max-age: 0` header, should we just add a flag to prevent that step? > @@ -1901,6 +1910,13 @@ is a <a>filtered response</a> whose <li><p>Return <var>newResponse</var>. </ol> +<p>A <dfn export id=concept-stale-response>stale response</dfn> is a <a for=/>response</a> where +the freshness lifetime calculation (excluding the stale-while-revalidate directive) has not +exceeded the current age. We shouldn't call a fresh response a "stale response". -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/fetch/pull/853#pullrequestreview-208456993
Received on Wednesday, 27 February 2019 11:16:14 UTC