我使用活动的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方法,其中包括一些包含用于预先加载,但它是相同的,它太慢了.... 我感谢任何帮助...
谢谢!
答案 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
请注意,生产中的渲染不会包含动态编译资产,因此这在开发中可能很重要,但不是真正的问题。