Как мне истечь время просмотра кэшированного фрагмента из консоли?
Что-то вроде
Rails.cache.delete('site_search_form')
не похоже на работу. Это возможно? Благодарю.
5 ответов
Записи фрагментов кэша создаются с ключом, немного отличающимся от того, к которому вы обращаетесь с помощью Rails.cache.
использование expire_fragment
вместо этого (вы можете отправить его на контроллер): http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html
В Rails 5 я предпринял следующие шаги, чтобы разрушить кеш, не прибегая к skip_digest: true
, Наша проблема заключалась в том, что изменение значения строк I18n не отражается в вычисленном дайджесте кэша, поэтому кэш не будет автоматически отключен.
Вот вид, где определен блок кеша:
/ views/layouts/_footer.html.slim
- cache :footer do
span= t('shared.footer')
Затем в консоль рельсов я бегу:
fragment = ActionController::Base.new.view_context.cache_fragment_name(:footer, virtual_path: 'layouts/_footer.html.slim')
ActionController::Base.new.expire_fragment(fragment)
cache_fragment_name
выясним дайджест на основе virtual_path
Ключевой аргумент.
Другой вариант, если вы используете Redis в качестве хранилища кэша, — это поиск и удаление из Redis напрямую с помощью командыkeys
метод.
# get direct Redis client from Rails cache store
redis = Rails.cache.redis
# search for your key
keys = redis.keys.grep(/site_search_form/)
# delete the keys
keys.each do |key|
redis.del(key)
end