2012-07-23 70 views
8

我的網站上有很多緩存片段,因爲我使用片段緩存,action_suffix在我的應用程序模板中使用緩存。即時通訊使用此爲navigatin例如,...這樣的:所有緩存片段的列表鍵

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

它的工作非常好,但現在我有一個小問題,到期緩存的片段。我需要的是緩存片段的所有鍵的列表。我不僅僅看看文檔,但我沒有找到任何東西。

有沒有辦法列出所有的片段密鑰?

+0

您使用的是什麼緩存存儲? – 2012-07-23 13:55:19

+0

我還沒有指定任何異常緩存存儲,所以我使用默認緩存存儲 – davidb 2012-07-23 14:32:57

回答

6

您可以通過一個Regexpexpire_fragment

expire_fragment(%r{navigation_}) 

按照文檔

到期的正則表達式只支持緩存,可以在 遍歷所有的鍵(不像memcached的)。

+0

謝謝你太棒了! – davidb 2012-08-17 08:49:30

6

有沒有一種方法,我可以找到在軌道緩存列出所有鑰匙,但如果您使用的是默認的文件緩存,可以通過查看文件系統中列出。當在默認軌道目錄在Unix/Linux,你可以使用這樣的事情看到所有的緩存文件(名爲鑰匙URL編碼後):

find ./tmp/cache -type f 

或者這unencode和條狀顯示目錄以及:

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

使用正則表達式來刪除會讓你刪除大多數鍵,但是對於調試來說,如果你正在使用複雜鍵,有時候會看到你存儲的實際鍵。