浏览器是否支持 s-maxage?

Is s-maxage supported by browsers?

我很难确定浏览器是否支持 s-maxage,或者浏览器的哪个版本。

s-maxage 主要用于共享缓存,例如代理或 CDN,但在我看来它也适用于 Chrome。例如,对于使用 recommended cache-control header 的 Next.js 应用程序,如下所示:

cache-control: public, s-maxage=10, stale-while-revalidate=59

我在 Chrome 中看到了这种行为:

但是,我找不到像 MDN 文档或任何可以记录它的权威资源。有人知道吗?

您不应期望浏览器遵守 s-maxage

specification中所定义,s-maxage仅适用于共享缓存。浏览器缓存通常被认为是私有缓存。

我认为您所看到的只是浏览器在您未明确说明过期时所做的默认缓存。由于您的 headers 中的 none 提供了明确的 freshness lifetime, the cache is free to assign its own heuristic freshness。即使您不提供任何过期指令,看到缓存命中也是正常的。

浏览器在计算其启发式新鲜度时可能会考虑 s-maxage,但我当然不会依赖它。