慢activeadmin索引页面

时间:2017-08-01 14:07:26

标签: ruby-on-rails performance activeadmin

我使用活动的admin gem工作的Rails 5。在开发中,我在使用rail s运行时看到了很多查询。其中大多数都是CACHE(0.0ms)类型。 最后几秒后它会显示:

 Rendered /home/blabla/.rvm/gems/ruby-2.2.5@test/gems/activeadmin-1.0.0.pre4/app/views/active_admin/resource/index.html.arb (10588.9ms)
Completed 200 OK in 10646ms (Views: 10338.2ms | ActiveRecord: 264.1ms)

渲染视图时间问题?在索引视图中,我展示了很多关于某个模型及其关联的信息。另外我添加了scoped_collection方法,其中包括一些包含用于预先加载,但它是相同的,它太慢了.... 我感谢任何帮助...

谢谢!

2 个答案:

答案 0 :(得分:3)

这可能是由于过滤器造成的。您可以指定要包含的过滤器,否则模型上的所有属性都将添加为过滤器。 https://github.com/activeadmin/activeadmin/blob/master/docs/3-index-pages.md

答案 1 :(得分:1)

CACHE个人很好。这意味着ActiveRecord已经拥有数据,不需要进行数据库调用。

要诊断问题,我建议使用bullet gem,这会突出显示由于缺少包含而导致的慢查询。要真正深入了解效果,您可以尝试使用rack mini-profiler gem扩展名的flamegraph。我在诊断导致慢速新闻的问题方面取得了成功。通常这是一个N + 1问题,但每次进行编辑时,开发版本都会重新编译所有CSS。

使用includes加速ActiveAdmin非常简单:

controller do
  def scoped_collection
    super.includes(:bill_address)
  end
end

请注意,生产中的渲染不会包含动态编译资产,因此这在开发中可能很重要,但不是真正的问题。