【发布时间】:2012-12-30 11:14:47
【问题描述】:
在我看来,我经常这样做:
<% 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!
【问题讨论】:
标签: mysql ruby-on-rails memcached