3

我有一个相当大的 Rails 应用程序(Rails 3.2.3),使用资产管道。assets 文件夹中有很多文件。

在 1.8.7 下,运行rake assets:precompile需要 4 分钟。这很长,但由于资产数量庞大,我愿意容忍它。

问题是应用升级到 1.9.2 后,运行rake assets:precompile需要28 分钟

以下是相关的 gem 版本:

rails (= 3.2.3)
uglifier (1.2.3)
  execjs (~> 1.3.0)
therubyracer (~> 0.9.9)
  libv8 (~> 3.3.10)
sprockets (2.1.2)
  hike (~> 1.2)
  rack (~> 1.0)
  tilt (~> 1.1, != 1.3.0)

当我tail -f log/production.log看到正在编译的资产时,我无法确定单个资产的长时间延迟(尽管我确实在日志中多次看到相同的资产——大概是因为每个资产都有多个步骤? )

我应该尝试哪些其他步骤来帮助诊断问题所在?

4

1 回答 1

1

Ruby 1.9.2 在加载时间上有严重的回归,我相信随着加载的文件数量呈指数增长。这对 Rails 应用程序造成了很大的打击,我怀疑这是您所看到的资产编译时间大大增加的原因。

这已在 1.9.3 中修复,因此请尝试升级到该版本或将加载补丁向后移植到 1.9.2

于 2012-05-20T01:34:40.043 回答