我在Heroku Cedar堆栈上运行一个支持资产管道的rails 3.1应用程序。 Heroku lists 3 ways编译资产
显然#3对性能不利,而Heroku文档也建议不要这样做。但我不确定#1和#2之间哪个更好。
#1要求您运行rake assets:precompile
并在git中包含您的public/assets
文件夹。你的slug会更大,但我认为部署网站的停机时间会更短。但更大的段塞大小意味着应用程序启动速度变慢,所以可能是一次洗牌。
#2将需要更长的时间来部署更新。但是,你会有一个较小的slu and,而且管理/记忆的次数较少。
我的问题是 - 哪个选项(#1或#2)最适合制作?为什么?
到目前为止它看起来像选项#2但我想确保我不会忽视某些东西。
答案 0 :(得分:7)
我在这里提出了一些问题和一个重要问题:Rails 3.1.1 asset pipeline Heroku caching gotcha
如果它对我有用,我更喜欢#2,所以我不必检查编译的资产,这些资产只会使git存储库膨胀。
在slug编译期间编译资产不会导致任何额外的停机时间,因为您的现有应用程序将保持不变,直到slug编译完成,所以不用担心。
如果你能让它适合你,我的建议是#2。如果你最终以#1结束,那么最好的做法是在rake资产之前使用git rm -r public / assets:预编译以确保没有任何遗骸。
答案 1 :(得分:2)
这可能取决于资产文件夹的大小,(也许长期解决方案是将这些资产放在应用程序之外并将它们托管在S3等上。)
否则,我认为#1将是最好的生产,因为任何资产都可以直接使用和缓存。
我正在阅读Heroku在assets上的文档部分,他们似乎表示将会使用#2,以防您忘记自己做,为方便起见。你不会得到一个小的slug,因为资产准备的结果将被包含在slug中以进行部署。