ほぼ雑記的メモ
Viewだけで Fragmentキャッシュをするには
<% cache key do %> hogehoge <% end %>
で良いのですが、例えばControllerでも負荷の重いところをスルーさせようとするとViewとControllerで深い連携が必要になるからゴチャゴチャしはじめるます。MVCモデルが裏目に出ているとも言えましょう。ちなみに、これをチェックするにはコントローラ側で
unless fragment_exist?(key) #負荷のかかる処理 end
とかやればいいんですが、デフォルトの FileCacheだとハッシュ関数でダイジェスト文字列をkeyの後ろにつけてしまうので、このコードではこの処理は毎回実行されてしまいます。この文字列を Controller側で知る方法が分からないので困りました・・・View側での対処は簡単で
<% cache key, skip_digest: true do %> hogehoge <% end %>
のように skip_digestオプションを指定してあげればOK。
こんなことするくらいならAction cacheのほうが簡単かな?
Powered by Red Leaf ( Rev. c78c769f2 ), © Issei Numata, 2007-2021