список ключей всех кэшированных фрагментов
У меня есть много кэшированных фрагментов на моем веб-сайте, потому что я использую кэширование фрагментов с action_suffix
, чтобы использовать кэширование в моем шаблоне приложения. Я использую это для навигации, например,... вот так:
<% cache(:action => params[:action], :action_suffix => "navigation_#{request.path}") %>
<%= render 'navigation_entries/navigation' %>
<% end %>
Он работает довольно хорошо, но теперь у меня есть небольшая проблема с истечением кэшированных фрагментов. Мне нужен список всех ключей для кэшированных фрагментов. Я не только просмотрел документацию, но и ничего не нашел.
Есть ли способ перечислить все фрагменты ключи?
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*\//,"")'
Использование регулярного выражения для удаления позволит вам удалить большинство ключей, но для отладки иногда приятно видеть реальные ключи, которые вы храните, если вы используете сложные ключи.