缓存activerecord结果就像片段一样

时间:2012-12-30 11:14:47

标签: mysql ruby-on-rails memcached

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

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

1 个答案:

答案 0 :(得分:2)

我认为ActiveRecord::Cache::Store就像你想要的那样。您可以像this一样使用它。