【发布时间】:2010-09-17 22:41:23
【问题描述】:
用 rails 和 memcached 缓存分页结果集的最佳方法是什么?
例如,帖子控制器:
def index
@posts = Rails.cache.fetch('all_posts') do
Post.paginate(:conditions => ['xx = ?', yy], :include => [:author], :page => params[:page], :order => 'created_at DESC')
end
end
当params[:page] 更改时,这显然不起作用。我可以将密钥更改为"all_posts_#{params[:page]}_#{params[:order]_#{last_record.created_at.to_i}",但是可能会有几个可能的订单(最近的、热门的、投票最多的等),并且会有页面和订单的组合......这样会有很多密钥。
问题 #2 - 似乎当我实施此解决方案时,缓存被正确写入,并且在第一次调用分页操作期间页面加载正常。当我以recent 顺序单击同一页面(即page1)时,浏览器似乎甚至没有调用服务器。我在生产日志中没有看到任何控制器操作被调用。
我正在使用乘客、REE、memcached 和 rails 2.3.5。 Firebug 显示没有发出任何请求....
有没有更简单/更优雅的处理方式?
【问题讨论】: