【问题标题】:Rails 3.1 assets caching on heroku在 Heroku 上缓存 Rails 3.1 资产
【发布时间】:2011-06-04 16:43:56
【问题描述】:

即使我已经 rake assets:precompile-ed 我的所有资产,我似乎仍然很难让 heroku 正确缓存它们。我不断收到类似

的东西
2011-06-04T16:40:20+00:00 app[web.1]: cache: [GET /assets/application-516c0fa9926527ab92d849148e557ee6.css] stale, invalid, store
2011-06-04T16:40:22+00:00 app[web.1]: cache: [GET /assets/logo-3a84e73bd76ca1ab9629d0a92eac7d4f.png] stale, invalid, store

来自我的日志。虽然当我用萤火虫检查时,我似乎得到了一个 HTTP 304。我做错什么了吗?

【问题讨论】:

    标签: caching heroku assets ruby-on-rails-3.1


    【解决方案1】:

    这个blog post 有很好的答案和几个选项。这篇博文看起来并不严肃,但这是推荐阅读。

    完整网址: http://jimmycuadra.com/posts/the-challenge-of-asset-packaging-on-heroku

    让 Varnish 缓存并将其作为静态内容提供服务非常棒,无需预编译 rake 任务。

    2012 年 3 月 20 日更新

    世界变化很快。 heroku 的 Cedar 堆栈就是为此而构建的。 heroku create myapp --stack cedar 记得在你的 application.rb 中添加这行代码,以便在部署时编译。

    config.assets.initialize_on_precompile = false 
    

    /更新

    【讨论】:

    【解决方案2】:

    您也可以试试这个名为AssetHat 的简洁Rails gem;它利用缓存并且超级容易设置。

    【讨论】:

      【解决方案3】:

      对于登陆这里并运行自己的 nginx 的人,您可以这样做:

      location ~ "^\/assets\/[^.]+-[a-z0-9]{32}\." { expires max; }
      

      from @cgriego

      但这对 Heroku 没有帮助 :-)

      另一方面,在研究了一下之后,我将只使用 CDN。然后我将使用 config.action_controller.asset_host 配置我的应用程序。

      Heroku 再次让最佳实践变得更容易!

      【讨论】:

        猜你喜欢
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 2017-11-12
        • 1970-01-01
        • 2011-12-30
        • 2011-10-10
        • 1970-01-01
        相关资源
        最近更新 更多