【问题标题】:Does fastly automatically purge when new code pushed to heroku?新代码推送到heroku时是否会快速自动清除?
【发布时间】:2016-01-17 06:39:34
【问题描述】:

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

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

【问题讨论】:

    标签: node.js heroku cdn fastly


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

    【讨论】:

    • 是的,但这有点痛苦...我不想清除所有内容,只需要清除已更改的文件...
    • 您可以使用代理键和相​​应的代理键清除来限制对已更改资源的清除。这不需要您知道已更改的 URI 路径的范围,并且在许多情况下可以简化此任务。
    【解决方案2】:

    不,它没有。它遵循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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多