0

有人评论了这个关于缓存的问题:

...使用 Cache-Control 值:max-age=0, s-maxage=604800 似乎可以在新页面内容上获得我想要的即时客户端更新行为,但仍然在 CDN 级别缓存

我真的会在 CDN 级别获得缓存并为我的用户提供即时更新吗?

是否有意义?这种组合如何运作?

4

1 回答 1

1

是的,这是有道理的。

使用该评论中提到的配置,您的用户将获得instant过时的响应,因此他们必须在下次发出请求时对其进行验证。CDN 将缓存有效响应604800数秒。所以重复的请求将主要由 CDN 服务,而不是 Origin 服务器。

但是如果你更新你的应用程序呢?CDN 上的陈旧缓存会发生什么?

新部署后,您需要确保 CDN 中的所有过时缓存都将被清除/清除。

例如,请参阅从 Cloudflare 清除缓存的资源:它为您提供了许多关于如何执行此操作的选项。

  • 按单个文件(按 URL)清除
  • 通过 Cloudflare 仪表板按单个文件清除
  • 清除一切
  • 通过 API 清除缓存的资源
  • ETC

例如,Firebase Hosting将在新部署后清除所有 CDN 缓存:

任何请求的静态内容都会自动缓存在 CDN 上。如果您重新部署网站的内容,Firebase 托管会自动清除 CDN 中所有缓存的静态内容,直到下一次请求。

至于评论中建议的设置,我认为Cache-Control: no-cache会做得更好。

来自MDN - 缓存控制

无缓存

响应可以由任何缓存存储,即使响应通常是不可缓存的。但是,存储的响应必须始终在使用之前先通过源服务器的验证,因此,您不能将 no-cache 与 immutable 结合使用。如果您不想将响应存储在任何缓存中,请改用 no-store。该指令在阻止缓存存储您的响应方面无效。

于 2021-02-10T07:51:22.160 回答