【发布时间】:2011-12-19 06:25:58
【问题描述】:
我正在支持资产管道的 Heroku Cedar 堆栈上运行 rails 3.1 应用程序。 Heroku lists 3 ways 编译资产
- 在本地编译资产。
- 在 slug 编译期间编译资产。
- 在运行时编译资产。
显然#3 对性能不利,Heroku 文档也建议不要这样做。但我不确定 #1 和 #2 哪个更好。
#1 要求您运行 rake assets:precompile 并将您的 public/assets 文件夹包含在 git 中。您的 slug 会更大,但我认为部署站点的停机时间会更短。但更大的 slug 大小意味着应用程序启动速度较慢,所以可能是清洗。
#2 会延长部署更新的时间,因为预编译是在 Heroku 端完成的。但是,您的 slug 会更小,需要管理/记住的东西也会更少。
我的问题是 - 哪个选项(#1 或 #2)最适合生产,为什么?
到目前为止,它看起来像选项 #2,但我想确保我没有忽略某些东西。
【问题讨论】:
-
devcenter.heroku.com/articles/cdn-asset-host-rails31 也是一本不错的读物——尽管它会将资产从您在 Heroku 上的应用同步到 S3,因此它们仍然存在于您的 slug 中,只是没有从 Heroku 提供。
-
有时 #2 并不总是一个选项。 Heroku 总是会先尝试在 slug 编译期间编译它们,如果失败则在运行时编译。
标签: ruby-on-rails ruby ruby-on-rails-3 heroku asset-pipeline