私の見解では、私はこれをたくさん行います:
<% cache("sports_menu_" +session[:lang], {:expires_in => 60.minutes}) do %>
...... # a load of stuff
<% end %>
ただし、それほど頻繁に変更されないデータをDBに照会するのに多くの時間が費やされていることを発見しました。同様の方法でこのデータをキャッシュする方法はありますか?
例えば:
Model.find(:all, :select => "only a few fields", :conditions => "nasty conditions", :include => "some joins", :order => "date_time desc")
これには約7秒かかり、メインテーブルには約2,000万件のレコードが保持されます。多くのユーザーがこの特定のアクションをヒットし、クエリは1回/ヒットでのみ実行されます。しかし、それを数分間キャッシュして、他のすべての人がキャッシュからロードするようにするのは理にかなっています。ちなみに私はmemcacheを使用しています。
ビュー内に時々変更されるいくつかのパラメーターといくつかのロケール固有のコードがあるため、アクション全体をキャッシュできません。
私はそれをビューレベルに移動することを検討しましたが、それについてあまり快適に感じないでください、それはRailsを使用するという点をやや打ち負かすでしょう。
TIA!