список ключей всех кэшированных фрагментов


У меня есть много кэшированных фрагментов на моем веб-сайте, потому что я использую кэширование фрагментов с action_suffix, чтобы использовать кэширование в моем шаблоне приложения. Я использую это для навигации, например,... вот так:

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

Он работает довольно хорошо, но теперь у меня есть небольшая проблема с истечением кэшированных фрагментов. Мне нужен список всех ключей для кэшированных фрагментов. Я не только просмотрел документацию, но и ничего не нашел.

Есть ли способ перечислить все фрагменты ключи?

2 8

2 ответа:

Вы можете передать Regexp expire_fragment:

expire_fragment(%r{navigation_})

Согласно документам

Срок действия регулярного выражения поддерживается только в кэшах, которые могут повторяться все ключи (в отличие от memcached).

Нет метода, который я могу найти в кэше rails, чтобы перечислить все ключи, однако если вы используете файловый кэш по умолчанию, вы можете перечислить их, заглянув в файловую систему. Когда в стандартном rails dir на unix / linux вы можете использовать что-то вроде этого, чтобы увидеть все файлы кэша (названные в честь ключей 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*\//,"")'

Использование регулярного выражения для удаления позволит вам удалить большинство ключей, но для отладки иногда приятно видеть реальные ключи, которые вы храните, если вы используете сложные ключи.