0

私の見解では、私はこれをたくさん行います:

<% 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!

4

1 に答える 1

2

ActiveRecord::Cache::Storeがあなたが望むものであるように私には見えます。こんな感じで使えます。

于 2012-12-30T11:22:53.190 に答える