像
这样的东西Rails.cache.delete('site_search_form')
似乎不起作用。这可能吗?感谢。
答案 0 :(得分:55)
的ActionController :: Base.new.expire_fragment(key)的
答案 1 :(得分:6)
使用与使用Rails.cache访问的密钥略有不同的密钥创建缓存片段条目。
改为使用expire_fragment
(您可以将其发送给控制器):http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438
答案 2 :(得分:2)
Rails.cache.delete "views/site_search_form"
答案 3 :(得分:0)
在Rails 5中,我采取了以下步骤来破解缓存而不诉诸skip_digest: true
。我们的问题是更改I18n字符串的值并不反映在计算的缓存摘要中,因此缓存不会自动被破坏。
以下是定义缓存块的视图:
/ views/layouts/_footer.html.slim
- cache :footer do
span= t('shared.footer')
然后在rails控制台中运行:
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
关键字参数找出摘要。