Rails:当cache_classes为false时,缓慢的部分呈现

时间:2017-06-27 00:35:08

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-3.2

我正在将Rails 3.2应用程序升级到版本5.我正在做的第一件事是升级到版本4并使所有测试仍在通过。

我注意到的一件事是我的应用程序现在在开发模式下非常慢。有些请求需要花费1500毫秒,因为他们过去需要花费不到50毫秒的3.2。

经过一些调试后,我发现如果我在版本4中启用cache_classes配置,我将获得与我在3.2版中禁用cache_classes时相似的性能。

Rails 4.2.9(config.cache_classes = false)

(previous render messages intentionally removed )
  Rendered application/_row.html.erb (91.2ms)
  Rendered application/_row.html.erb (104.1ms)
  Rendered application/_row.html.erb (103.9ms)
Completed 200 OK in 1617ms (Views: 1599.0ms | ActiveRecord: 8.3ms)

Rails 4.2.9(config.cache_classes = true)

(previous render messages intentionally removed )
  Rendered application/_row.html.erb (2.3ms)
  Rendered application/_row.html.erb (2.5ms)
  Rendered application/_row.html.erb (2.0ms)
Completed 200 OK in 59ms (Views: 41.8ms | ActiveRecord: 7.7ms

从我能够检查的,当config.cache_classes = false时,Rails不再缓存部分和类。甚至不像以前那样在3.2中使用相同的请求。

我还检查了config.reload_classes_only_on_change,这似乎是相关的,并且设置为true。

是否有其他东西我应该检查/更改以获得类似于我曾经在3.2中禁用cache_classes的那个?或者它是Rails中的回归无法修复?

不幸的是,启用cache_classes开发是不可行的。

注1:我创建了一个空的rails 4.2.9,并且能够通过创建大量的partials和启用/禁用cache_classes来重现这个问题。

注2:Rails 5中似乎也出现了同样的问题。我专注于Rails 4,因为那是我现在正在工作的那个。

0 个答案:

没有答案