如何在Ruby on Rails 3中缓存查询

| 我的应用程序中有以下查询
@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缓存。 有关更多信息,我遵循了以下指南。 试试看。我以这种方式工作。希望能有所帮助。
您可以将片段缓存用于视图模板中显示类别的部分。这意味着将从缓存存储中提供类别,并且查询将只执行一次,直到缓存过期(使用
expire_fragment
方法)。 片段缓存导轨指南

要回复问题请先登录注册