https://github.com/rails/cache_digests
如果你在使用 Fragment Cache 的话,你可能会苦恼,有时候模版改变了,清理旧的 cache 数据会很麻烦。cache_digests 可以帮你解决这个难题,他会把局部模版的文件生成一个 md5 digest,并用这个 digest 作为 cache() 方法的 key 的一项内容。这就意味着,当模版有任何的修改,cache key 将会改变,同时 cache 也就等于更新了。
在这之前,我们往往这样来处理模版过期的问题:
# app/views/comments/_comment.html.erb
<% cache [ "v1", comment ] do %>
My comment: <%= comment.body %>
<% end %>
给 cache key 增加一个版本号,有修改的时候提升一下版本号...
另外,据 Twitter 上面 @dhh 说 cache_digests 将会引入 Rails 4.0 里面:
@dhh: cache_digests will be in Rails 4.0. As will another forthcoming gem, etagger, to pair these cache versions with etags. Russian Doll hurray!