当前位置:  开发笔记 > 数据库 > 正文

Rails缓存:陈旧?始终在开发中返回true

如何解决《Rails缓存:陈旧?始终在开发中返回true》经验,为你挑选了1个好方法。

继hawkins.io在我一个人的模型,我有:

def self.cache_key
   Digest::MD5.hexdigest "#{maximum(:updated_at)}.try(:to_i)-#{count}"
end

我正在使用Pundit进行授权.所以在我的人员控制器中,我有:

def show
    @person = Person.find(params[:id])
    if authorize @person
      if stale? @person
        @person = Person.basic_details.last_details.find(params[:id]).decorate
        @person_histories = PersonHistory.new(person_id: @person.id).results
        respond_with @person
      end
    end
end

在我的development.rb环境中:

config.cache_store = :file_store, Rails.root.join('tmp', 'cache'), { expires_in: 4.hours }
config.consider_all_requests_local       = true
config.action_controller.perform_caching = true

(我在Windows上这里,所以没有memcached等设置).

当我重新加载人物节目视图,加载后立即,我希望它完全缓存.然而,它重新查询数据库等等.是否有一个设置或我缺少的东西?当我检查缓存键时它们是相同的,但stale? @person总是看起来返回true.



1> 小智..:

你试过这个吗?

禁用Rack :: MiniProfiler缓存

Rack :: MiniProfiler中间件会删除与缓存相关的标题,因此,陈旧?将一直返回.我们可以使用以下初始化程序完全禁用缓存:

Rack::MiniProfiler.config.disable_caching = false

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有