0

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

<% 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 条记录。许多用户点击了这个特定的操作,查询只运行一次/点击。但是将其缓存几分钟是有意义的,这样对其他人来说,它将从缓存中加载。顺便说一句,我正在使用内存缓存。

我无法缓存整个操作,因为有时会更改某些参数以及视图中的某些特定于语言环境的代码。

我考虑过将其移至视图级别,但对此感觉不太舒服,这会破坏使用 Rails 的意义。

蒂亚!

4

1 回答 1

2

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

于 2012-12-30T11:22:53.190 回答