youtube に DHH がしゃべっている動画があったので観ました。
The Complete Guide to Rails Performance という、Railsのパフォーマンスを改良するノウハウが書かれた本のコンテンツ*1の一つらしく、DHH に Rails のパフォーマンスについてインタビューをしています。
英語の聞き取りに自信がないので間違っているかもしれませんが、DHH は動画中で「Russian Doll Caching で N+1 を解決できる」ようなことを言っています。
例えば投稿の一覧と著者情報を表示したいとき、次のように書くと、二回目以降、 post が変更されない限り、post.author
のクエリは実行されません。
<% cache @posts do %> <% @posts.each do |post| %> <% cache post do %> <%= post.title %> <%= render post.author %> <% end %> <% end %> <% end %>
キャッシュが十分効いている状態では includes
メソッドなどで eager loading するよりも速そうですが、個人的にはなんか怖くて手を出しにくいなという印象です。
このような書き方をしている方、他にも居るようなら話聞いてみたいなー。
*1:買いましたが絶賛積読中です><