我的应用程序中文章模型的Active Admin索引页面需要很长时间才能加载。这是因为有2500条文章条目,因为我启用了过滤器(我需要启用过滤器)。我觉得我已经做了文档推荐的所有内容,当涉及到加快速度时,但不知怎的,它仍在拉动每篇文章(当我只想让它在特定页面上拉出文章时)。也就是说,看起来分页似乎不能正常工作。
以下是代码的示例:
ActiveAdmin.register Article do
filter :title
config.sort_order = "published_desc"
config.per_page = 10
index :pagination_total => false do |article|
# code for my columns goes here
end
end
这是日志中的一些相关输出。即使我只是尝试按标题搜索单个文章(例如使用过滤器),也有很多这种类型的调用:
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (258.8489ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (234.8890ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (269.1431ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (240.3183ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (250.5591ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (403.0311ms)
MOPED: 127.0.0.1:27017 GET_MORE database=[db_name] collection=articles limit=0 cursor_id=1211541689548427701 (250.7601ms)
答案 0 :(得分:3)
删除特定过滤器通常有助于加快索引视图的速度。问题是ActiveAdmin将所有资源的关系作为过滤器选项加载,其中许多可能不是必需的。
可以使用remove_filter
方法单独删除过滤器。
ActiveAdmin.register Article do
remove_filter :category
end
另一种方法是更改过滤器的类型。很多时候,没有必要通过相关记录来过滤选择。您可以将其定义为基于字符串的过滤器。
ActiveAdmin.register Article do
# filter :category # <= Slow due to number of categories
filter :category_name, as: :string
end
还可以自定义可用的选项,或仅提供选项的子集。
ActiveAdmin.register Article do
filter :category, collection: proc { Category.limit(10) }
end