RFC 7234, "Hypertext Transfer Protocol (HTTP/1.1): Caching", June 2014Source of RFC: httpbis (app)
Errata ID: 5564
Publication Format(s) : TEXT
Reported By: Bruce Adams
Date Reported: 2018-11-27
Rejected by: Alexey Melnikov
Date Rejected: 2019-03-25
Section 4.2.4 says:
A cache MUST NOT send stale responses unless it is disconnected (i.e., it cannot contact the origin server or otherwise find a forward path) or doing so is explicitly allowed (e.g., by the max-stale request directive; see Section 5.2.1).
It should say:
A cache SHOULD NOT send stale responses unless it is disconnected (i.e., it cannot contact the origin server or otherwise find a forward path) or doing so is explicitly allowed (e.g., by the max-stale request directive; see Section 5.2.1). A cache MAY send stale responses if a cache-control extension for stale content such as "stale-while-revalidate" is used (see RFC5861).
The original text seems to conflict with https://tools.ietf.org/html/rfc5861#section-3
3. The stale-while-revalidate Cache-Control Extension
When present in an HTTP response, the stale-while-revalidate Cache-
Control extension indicates that caches MAY serve the response in
which it appears after it becomes stale, up to the indicated number
stale-while-revalidate = "stale-while-revalidate" "=" delta-seconds
If a cached response is served stale due to the presence of this
extension, the cache SHOULD attempt to revalidate it while still
serving stale responses (i.e., without blocking).
See also https://stackoverflow.com/questions/53324538/rest-low-latency-how-should-i-reply-to-a-get-while-an-upload-is-pending
Mark Nottingham wrote:
Extensions are explicitly allowed to override requirements, and
making this a SHOULD would be too confusing (as many would read it as