设置Cache-Control max-age=0和s-maxage=不为0有意义吗?



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

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

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

有意义吗?这种组合是如何工作的呢?

是的,这是有道理的。

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

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

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

例如,请参阅从Cloudflare中清除缓存资源:它为您提供了许多如何做到这一点的选项。

  • 清除单文件(URL)
  • 通过Cloudflare仪表板通过单个文件进行清除
  • 清除一切
  • 通过API清除缓存的资源
  • 例如,Firebase Hosting将在新部署后清除所有CDN缓存:

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

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

From MDN - Cache Control:

no - cache

响应可以是,由任意存储缓存,即使响应通常是不可缓存的。但是,存储的响应必须始终通过验证因此,在使用原始服务器之前,您不能将无缓存与不可变服务器结合使用。如果您打算不将响应存储在任何缓存中,请使用no-store。

该指令不能有效阻止缓存存储你的响应。

相关内容

  • 没有找到相关文章

最新更新