如何解决极其缓慢的 rake assets:在 heroku 上预编译?

Posted

技术标签:

【中文标题】如何解决极其缓慢的 rake assets:在 heroku 上预编译?【英文标题】:How can I troubleshoot extremely slow rake assets:precompile on heroku? 【发布时间】:2014-03-13 11:10:00 【问题描述】:

rake assets:precompile 在本地和在 heroku 上运行时都很快(

heroku run time rake assets:precompile --trace(先清理)

在部署到 heroku 期间大约需要 10 分钟。

我如何找出问题所在并解决它?

作为参考,我已经尝试了所有这些:

rake assets:precompile is slow(尝试了 turbo-sprockets-rails3 并没有解决问题) rake assets:precompile taking extremely long to complete(试过 YUI,不行) Why is assets:precompile so slow on Heroku?(我们正在使用 ruby​​ 2)

我们使用的是 Rails 3.2.13,Ruby 2.0.0p353

【问题讨论】:

有一些关于跟踪/gemfile 的要点吗?如果您使用的是 turbo-sprockets-rails 之类的东西,那么只要您只使用部分重新编译,您应该会看到快速的本地编译。 【参考方案1】:

您应该尝试将资产存储在 memcached/redis 数据库中,这样您只需要编译在您部署的每个版本中发生更改的那些:

使用 Heroku (http://addons.heroku.com/) 设置一个 redis/memcached 数据库或使用您已有的数据库

配置资产缓存存储(通过config/environments/production.rb):

config.assets.cache_store = [ :redis_store,  
  url: ENV['REDIS_URL'] || 'redis://127.0.0.1/0',
  namespace: 'assets'
]

使用这种方法,我们已经能够将资产预编译时间从几分钟缩短到

【讨论】:

这并不能解决根本问题,只有在您更改某些资产相关配置并需要重新编译所有内容时才有效。

以上是关于如何解决极其缓慢的 rake assets:在 heroku 上预编译?的主要内容,如果未能解决你的问题,请参考以下文章

rake assets:precompile 突然失败

ruby assets.rake

rake assets:预编译很慢

为啥 rake assets:precompile 需要永远?

Rake assets:precompile 在生产中打开控制台会话时被终止

rake assets:precompile 在本地编译时不起作用