我们有一个 Rabl 视图,它由带有嵌套子级的 Rails 动作提供支持,结构如下:
:foo has many :bars
:bar has many :baz
这意味着我们的 rabl 视图可能看起来像这样:
collection @foo
attributes (#whatever)
child(:bar) {attributes :baz}
这非常有效,除了 Rabl 执行一个新查询来加载每个 bar 对象以及每个 baz 对象(最多有 7 个 baz 对象)。生成原始集合的查询需要不到 100 毫秒的时间返回,但总渲染时间需要 8 秒以上,并且每条foo
记录包括大约 30 个额外的查询。我已经尝试使用includes
语法来预加载关联的行,这样 Rabl 就不需要重新加载它们,但它似乎只是忽略了发送的信息。
我正在寻找关于如何优化此操作的想法,以便我们可以从中获得最佳性能。我不太确定从这里攻击的正确方法是什么。
提前致谢。