次のような構造で、ネストされた子を持つRailsアクションによって強化されたRablビューがあります。
:foo has many :bars
:bar has many :baz
つまり、rabl ビューは次のようになります。
collection @foo
attributes (#whatever)
child(:bar) {attributes :baz}
Rabl が新しいクエリを実行して、各バー オブジェクトと各 baz オブジェクト (最大 7 つの baz オブジェクトがあります) をロードするという事実を除いて、これは素晴らしく機能します。元のコレクションを生成するクエリは 100 ミリ秒未満で返されますが、合計レンダリング時間は 8 秒以上かかり、foo
レコードごとに約 30 の追加クエリが含まれます。関連する行をプリロードする構文を使用してincludes
、Rabl がそれらを再ロードする必要がないようにしてみましたが、送信された情報を無視しているようです。
この操作を最適化して、可能な限り最高のパフォーマンスを得る方法についてのアイデアを探しています。ここから攻撃する正しい方法が本当に何であるかはよくわかりません。
前もって感謝します。