有人评论了这个关于缓存的问题:
…使用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。
该指令不能有效阻止缓存存储你的响应。