Heroku的导轨3.1应用程序 - 编制资产当地VS塞编译

问题描述:

期间编制的资产,我运行的轨道在Heroku上雪松堆栈3.1应用程序,它支持资产的管道。 Heroku lists 3 ways来编译资产Heroku的导轨3.1应用程序 - 编制资产当地VS塞编译

  1. 本地编译资产。
  2. 编译slug时编译资产。
  3. 在运行时编译资产。

显然#3对性能不利,Heroku文档也建议不要。但我不确定#1和#2哪个更好。

#1要求您运行rake assets:precompile并在git中包含您的public/assets文件夹。你的slu will会更大,但我认为部署网站的停机时间会更短。但是更大的slu size大小意味着应用程序启动速度较慢,所以也许这是一次洗牌

#2将使其花费更长的时间来部署在Heroku上侧正在做,因为预编译的更新。但是,你会有一个更小的slu and,而且管理/记忆更少。

我的问题是 - 哪个选项(#1或#2)是最适合生产的,为什么?

到目前为止,它看起来像选项#2,但我想确保我不忽视的东西。

+0

http://devcenter.heroku.com/articles/cdn-asset-host-rails31是一个很好看的太 - 虽然它同步资产S3从在Heroku您的应用程序,使他们仍然存在于你的蛞蝓只是没有提供来自Heroku。 –

+0

也有时#2并不总是一种选择。 Heroku总是会首先尝试编译它们,如果在运行时失败的话。 –

我解决一些问题,在我的问题上大的疑难杂症在这里:Rails 3.1.1 asset pipeline Heroku caching gotcha

我宁愿#2,如果它为我工作,所以我没有签编制资产刚刚涨大的混帐库。塞在编译期间

编制资产不会导致任何额外的停机时间,因为现有的应用程式会熬夜到一决高下编译完成所以不用担心那里。

我的建议是#2,如果你可以把它为你工作。如果你最终以#1的形式出现,那么采取最佳做法是在耙子资产之前对rm -r public/assets进行git:预编译以确保没有剩余。

+0

更新:升级到Devise 1.5后,选项#2现在适用于我。0 - 比检查资产更清洁。 –

+0

如果你没有其他选择,只有#1,创建一个Rake任务以部署到Heroku是一个好主意。它会1)删除公共/资产2)预编译资产3)签入新编译的资产git 4)推到heroku。 # – Dty

+0

#2也是我的首选选项 - 但我一直很困惑,为什么它需要这么长时间才能完成。它应该只是抓了十几个文件和gziping。也许缩小需要最长的时间来检查语法等?任何见解都会被赞赏 –

这可能取决于你的资产文件夹的大小,(也许一个长期的解决方案将是把这些资产在应用程序之外,并举办他们在S3等。)

否则,我假设由于任何资产都可以直接使用和缓存,因此#1将是生产力最好的产品。

我正在阅读Heroku关于assets的文档部分,他们似乎表示,#2将用于防止您忘记自己做,以方便。由于资产准备的结果将包含在slu to中以部署,因此您不会得到一小slu slu。

+0

非常有趣,slu size大小不小。感谢那些信息。但为什么在#1中缓存与#2不同? – Dty