我目前正在开发一个 Next.js 应用程序,其中某些页面的缓存标头设置为
cache-control: no-cache, max-age=120, must-revalidate
。尽管有这样的配置,我仍然遇到 CloudFront 的缓存未命中情况。根据我的研究,我了解到“无缓存”指示 CDN 在提供内容之前先通过源服务器验证内容的新鲜度。这是否意味着我的源服务器正在传达资源已过时且必须更新的信息?
no-cache
和 max-age=120
一般来说,对于 CloudFront 来说是矛盾的。
no-cache
表示未经重新验证,不应从缓存中提供内容。 max-age=120
表示内容在重新验证之前最多可以缓存和提供 120 秒。
这是两件不同的事情。
如果您想设置缓存的最长期限,请从标题中删除
no-cache
和 must-revalidate
,然后仅使用 cache-control: max-age=120
。
如果您希望对每个请求进行严格的重新验证,请使用
cache-control: no-cache, must-revalidate
,而不指定 max-age
。