我的网站上有很多缓存片段,因为我使用action_suffix
的片段缓存在我的应用程序模板中使用缓存。我使用这个作为导航,例如,...像这样:
<% cache(:action => params[:action], :action_suffix => "navigation_#{request.path}") %>
<%= render 'navigation_entries/navigation' %>
<% end %>
它工作得很好但是现在我有一个小问题到了缓存的碎片到期。我需要的是缓存片段的所有密钥列表。我不仅仅看了一下文档,但我找不到任何东西。
有没有办法列出所有片段密钥?
答案 0 :(得分:7)
您可以将Regexp
传递给expire_fragment
:
expire_fragment(%r{navigation_})
根据文档
只有可以迭代的缓存支持Regexp到期 所有键(与memcached不同)。
答案 1 :(得分:6)
我无法在rails cache上找到列出所有键的方法,但是如果您使用的是默认文件缓存,则可以通过查看文件系统列出它们。当在unix / linux上的默认rails dir中你可以使用这样的东西来查看所有缓存文件(以密钥url编码后命名):
find ./tmp/cache -type f
或者这也是取消编码和剥离dirs:
find ./tmp/cache -type f | xargs ruby -e 'require "cgi";puts CGI::unescape(ARGV.sort.join("\n")).gsub(/.*tmp\/cache\/\w*\/\w*\//,"")'
使用正则表达式删除将允许您删除大多数键,但是对于调试,如果您使用复杂键,有时可以看到您正在存储的实际键。