我正在我的项目中使用NextJS。对于每个页面请求,它会在响应中添加“s-maxage=31536000, stale-while-revalidate”缓存控制规则。这两个规则如何共同工作?
s-maxage
和 stale-while-revalidate
是 cache-control
HTTP头标准 的一部分,它们指示网页对象的缓存。
正如您所提到的问题,它们可以用逗号分隔来实现您想要的缓存策略。
Cache-Control: s-maxage=1, stale-while-revalidate=60
第一个值(s-maxage
)表示对象应该缓存多长时间,以秒为单位。它还“覆盖了max-age
或Expires
头字段,但仅适用于共享缓存(例如代理),并被私有缓存忽略”-请参见 HTTP expiration
第二个值(stale-while-revalidate
)如果支持,则在s-maxage
到期后,该对象可以再次缓存的时间长度,直到需要从您的站点重新请求。
cache-control
指令缓存下面是如何在 Next.js 中设置 缓存头文件。
这是我发布的一个相关帖子,强调了 Next.js 中 ISR 过程。
s-maxage
与maxage
不是相同的含义(请参见https://dev59.com/mpvga4cB1Zd3GeqP3owh);相关规范应该是“HTTP”,而不是“HTML”。 - Joe