8

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

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

它工作得很好,但现在我在缓存片段过期时遇到了一个小问题。我需要的是缓存片段的所有键的列表。我不仅查看了文档,还没有找到任何东西。

有没有办法列出所有片段键?

4

2 回答 2

7

您可以将 a 传递Regexpexpire_fragment

expire_fragment(%r{navigation_})

根据文档

正则表达式过期仅在可以遍历所有键的缓存上受支持(与 memcached 不同)。

于 2012-08-17T06:53:29.657 回答
6

我无法在 rails 缓存上找到列出所有键的方法,但是如果您使用的是默认文件缓存,则可以通过查看文件系统来列出它们。当在 unix/linux 上的默认 rails 目录中时,您可以使用类似这样的东西来查看所有缓存文件(以键 url 编码命名):

find ./tmp/cache -type f

或者这也可以取消编码和剥离目录:

find ./tmp/cache -type f | xargs ruby -e 'require "cgi";puts CGI::unescape(ARGV.sort.join("\n")).gsub(/.*tmp\/cache\/\w*\/\w*\//,"")'

使用正则表达式删除可以让您删除大多数键,但对于调试,如果您使用复杂键,有时可以很好地查看您正在存储的实际键。

于 2012-08-22T19:51:45.537 回答