我一直在将 Fastly CDN 用于图像等一堆静态资产,我也想将它用于我的 javascript 和 css,但我担心如果我推送新代码它不会更新并且这会导致错误。
我知道我可以设置一个系统来自动清除这些东西,但我宁愿不必这样做。基于一两个测试,我感觉 heroku 检测到静态文件更改并快速清除它们,但我没有看到任何地方说我可以依赖它。有人确定吗?
Fastly 将使用对象的 TTL(生存时间)来确定何时从源重新获取对象。TTL 可以通过 Surrogate-Control: max-age、Cache-Control: s-maxage|max-age 或 Expires 标头设置。如果文件在源上更新但 TTL 在 Fastly 服务器中未过期,Fastly 将继续提供旧内容。通过近乎实时的清除,您可以通过将清除 api 调用 ( https://docs.fastly.com/api/purge ) 添加到您的应用程序来避免这种情况。当您推送新代码时,还会发出清除调用。这将强制 Fastly 在下一个请求中获取新内容。
不,它没有。它遵循Cache-Control
标题。您可以使用资产指纹来使用哈希码和时间戳来命名您的静态文件,因此每次部署都会有一个新的文件名并且自动不在缓存中。我不知道它在 Node 中是如何工作的,但这是它在 Rails 和 Yii 中的工作方式:
http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#cache-busting
这是 Fastly 所说的