列出所有缓存片段的键

时间:2012-07-23 13:49:21

标签: ruby-on-rails caching ruby-on-rails-3.2

我的网站上有很多缓存片段,因为我使用action_suffix的片段缓存在我的应用程序模板中使用缓存。我使用这个作为导航,例如,...像这样:

<% cache(:action => params[:action], :action_suffix => "navigation_#{request.path}") %>
  <%= render 'navigation_entries/navigation' %>
<% end %>

它工作得很好但是现在我有一个小问题到了缓存的碎片到期。我需要的是缓存片段的所有密钥列表。我不仅仅看了一下文档,但我找不到任何东西。

有没有办法列出所有片段密钥?

2 个答案:

答案 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*\//,"")'

使用正则表达式删除将允许您删除大多数键,但是对于调试,如果您使用复杂键,有时可以看到您正在存储的实际键。

相关问题