我在我的应用程序中有以下
查询
@categories = Category.joins(:posts).select('distinct categories.*').order('label')
由于类别显示在每个页面上,因此会在每个页面视图上加载此查询.这对我来说似乎很混乱,因为类别列表经常没有得到更新.是否有一种很好的方法来缓存查询?我试过了
Category.cache do
@categories = Category.joins(:posts).select('distinct categories.*').order('label')
end
但我仍然看到每次从开发日志中的数据库加载查询.
在您的控制器中,您可以尝试以下
方法:
@categories = Rails.cache.fetch('categories',:expires_in => 24.hours) { Category.joins(:posts).select('distinct categories.*').order('label') }
这将只读取以查看以下数据块“类别”是否已缓存且未过期.如果在24小时后过期,则将查询模型并将新记录写入Rails缓存.
有关更多信息,我按照以下guide.
试试看.我这样工作.希望有所帮助.
原文链接:https://www.f2er.com/ruby/271229.html