8

action_suffixアプリケーションテンプレートでキャッシュを使用するためにフラグメントキャッシングを使用しているため、Webサイトにキャッシュされたフラグメントがたくさんあります。たとえば、これをナビゲーションに使用しています...次のように:

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

それはかなりうまく機能していますが、キャッシュされたフラグメントを期限切れにするのに少し問題があります。必要なのは、キャッシュされたフラグメントのすべてのキーのリストです。ドキュメントを見ただけではありませんが、何も見つかりませんでした。

すべてのフラグメントキーを一覧表示する方法はありますか?

4

2 に答える 2

7

Regexpに aを渡すことができますexpire_fragment:

expire_fragment(%r{navigation_})

ドキュメントによると

正規表現の有効期限は、すべてのキーを反復処理できるキャッシュでのみサポートされます (memcached とは異なります)。

于 2012-08-17T06:53:29.657 に答える
6

Rails キャッシュですべてのキーを一覧表示する方法はありませんが、デフォルトのファイル キャッシュを使用している場合は、ファイル システムを調べて一覧表示できます。unix/linux のデフォルトの rails dir では、次のようなものを使用して、すべてのキャッシュ ファイル (エンコードされたキー 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 に答える