在我的人物模型中关注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。
答案 0 :(得分:5)
你试过这个吗?
禁用Rack :: MiniProfiler缓存
Rack :: MiniProfiler中间件会删除与缓存相关的标题,因此,陈旧?将一直返回。我们可以使用以下初始化程序完全禁用缓存:
Rack::MiniProfiler.config.disable_caching = false