1

我一直在将 Fastly CDN 用于图像等一堆静态资产,我也想将它用于我的 javascript 和 css,但我担心如果我推送新代码它不会更新并且这会导致错误。

我知道我可以设置一个系统来自动清除这些东西,但我宁愿不必这样做。基于一两个测试,我感觉 heroku 检测到静态文件更改并快速清除它们,但我没有看到任何地方说我可以依赖它。有人确定吗?

4

2 回答 2

1

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 在下一个请求中获取新内容。

于 2015-10-19T02:45:12.650 回答
0

不,它没有。它遵循Cache-Control标题。您可以使用资产指纹来使用哈希码和时间戳来命名您的静态文件,因此每次部署都会有一个新的文件名并且自动不在缓存中。我不知道它在 Node 中是如何工作的,但这是它在 Rails 和 Yii 中的工作方式:

http://guides.rubyonrails.org/asset_pipeline.html#what-is-fingerprinting-and-why-should-i-care-questionmark

http://www.yiiframework.com/doc-2.0/guide-structure-assets.html#cache-busting

这是 Fastly 所说的

https://devcenter.heroku.com/articles/fastly#expired-assets

于 2015-11-03T23:25:35.473 回答