像缓存片段一样缓存activerecord结果



在我看来,我做了很多这样的事情:

<% cache("sports_menu_" +session[:lang], {:expires_in => 60.minutes}) do %>
...... # a load of stuff
<% end %>

然而,我发现很多时间花在查询数据库的数据不经常改变。是否有一种方法可以以类似的方式缓存此数据?

例如:

Model.find(:all, :select => "only a few fields", :conditions => "nasty conditions", :include => "some joins", :order => "date_time desc") 

耗时约7秒,主表保存约20M条记录。很多用户点击这个特定的操作,查询只运行一次。但将它缓存几分钟是有意义的,这样其他人就可以从缓存中加载它。我正在使用memcache。

我不能缓存整个操作,因为视图中有一些参数偶尔会改变,还有一些特定于语言环境的代码。

我考虑过把它移到视图级别,但是我觉得不太舒服,那样会破坏使用Rails的意义。

TIA !

它看起来像ActiveRecord::Cache::Store是你想要的。你可以这样使用

最新更新