Rails 3.1资产缓存在heroku上

God*_*han 8 caching assets heroku ruby-on-rails-3.1

即使我已经掠夺资产:预编译我的所有资产,我似乎仍然很难让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
Run Code Online (Sandbox Code Playgroud)

从我的日志.虽然我用firebug检查时似乎得到了一个HTTP 304.我做错了吗?

oma*_*oma 5

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

完整网址: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中添加这行代码以在deploy上进行编译.

config.assets.initialize_on_precompile = false 
Run Code Online (Sandbox Code Playgroud)

/ UPDATE

  • 在Heroku的Cedar堆栈上不使用Varnish.http://devcenter.heroku.com/articles/http-caching (2认同)

web*_*mat 1

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

location ~ "^\/assets\/[^.]+-[a-z0-9]{32}\." { expires max; }
Run Code Online (Sandbox Code Playgroud)

来自@cgriego

但这对我们在 Heroku 上没有帮助:-)

另一方面,经过一番研究后,我将只使用 CDN。然后,我将使用 config.action_controller.asset_host 配置我的应用程序。

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