我正在将Rails 3应用程序迁移到Rails 4.迁移过程非常顺利,但我遇到的一个大问题是我的旧Rails 3代码使我的缓存过期并不是#39;工作。我得到的日志如下:
Expire fragment views/localhost:3000/cardsets/36?action_suffix=edityes (0.0ms)
...
Read fragment views/localhost:3000/cardsets/36?action_suffix=edityes/d8034b6e68ba30b5916a2ebb73b68ffe (0.0ms)
原来这是因为Rails 4带来了一种新的时髦缓存,缓存摘要。最后的那个长十六进制字符串是Rails想要与这个缓存片段关联的一些视图的md5摘要。
我相信我不需要缓存摘要。我的应用程序很少更新,通常我可以在更新时清除缓存,因此引用先前部署版本的一段视图代码的缓存片段的概念是无关紧要的。
我看到我可以使用cache
标志修改对:skip_digest => true
的任何给定调用。 This blog post指的是修改大量cache
次调用以添加:skip_digest
。但我相信我想在我的应用程序中对cache
的每次调用应用此标志。当然必须有一些方法来普遍禁用缓存摘要?
答案 0 :(得分:3)
最简单的方法是对cache_fragment_name
方法进行修补,以便skip_digest
默认为true
。为了在您需要时使用md5摘要,您只需将skip_digest
设置为false
module ActionView
module Helpers
module CacheHelper
def cache_fragment_name(name = {}, options = nil)
skip_digest = options && !options[:skip_digest].nil? ? options[:skip_digest] : true
if skip_digest
name
else
fragment_name_with_digest(name)
end
end
end
end
end