【问题标题】:list keys of all cached fragments列出所有缓存片段的键
【发布时间】:2012-07-21 18:25:24
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你使用的是什么缓存存储?
  • 我没有指定任何异常缓存存储,所以我使用默认缓存存储

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


【解决方案1】:

您可以将Regexp 传递给expire_fragment

expire_fragment(%r{navigation_})

根据文档

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

【讨论】:

    【解决方案2】:

    我无法在 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*\//,"")'
    

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

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 2011-03-21
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 2017-08-20
      • 2020-07-23
      • 2011-09-01
      • 1970-01-01
      相关资源
      最近更新 更多