Rails 3.1资产在heroku上缓存
问题描述:
即使我已经掠夺了资产:预编译了我所有的资产,但我似乎仍然很难获得heroku来正确缓存它们。我总是从我的日志中得到诸如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
。虽然当我检查萤火虫时,好像我正在收到HTTP 304。我做错了什么?
答
对于有人在这里登陆,经营自己的nginx的,这里是你如何做到这一点:
location ~ "^\/assets\/[^.]+-[a-z0-9]{32}\." { expires max; }
但是,这并不能帮助我们在Heroku :-)
在另一方面,稍微查看一下后,我将使用CDN。然后,我将使用config.action_controller.asset_host配置我的应用程序。
再一次,Heroku让您更轻松地使用最佳实践!
答
这个blog post有很好的答案和几个选项。博客文章看起来并不严肃,但这是推荐阅读。
完整的URL: http://jimmycuadra.com/posts/the-challenge-of-asset-packaging-on-heroku
让光油缓存,并将其用作静态内容是辉煌的,没有必要进行耙任务预编译。
UPDATE 2012年3月20日
世界变化很快。 heroku的Cedar堆栈就是为此而构建的。请记住在application.rb中添加这行代码以在部署上进行编译。
config.assets.initialize_on_precompile = false
/UPDATE
在Heroku的Cedar烟囱上不使用清漆。 http://devcenter.heroku.com/articles/http-caching – Jared 2011-11-19 17:50:46
thx。更新的答案以反映杉木堆栈 – oma 2012-03-21 16:07:24