のようなものビューのキャッシュされたフラグメントをコンソールから期限切れにするにはどうすればよいですか?
Rails.cache.delete('site_search_form')
はうまくいかないようです。これは可能ですか?ありがとう。
のようなものビューのキャッシュされたフラグメントをコンソールから期限切れにするにはどうすればよいですか?
Rails.cache.delete('site_search_form')
はうまくいかないようです。これは可能ですか?ありがとう。
キャッシュフラグメントのエントリは、Rails.cacheでアクセスするものとは少し異なるキーで作成されます。
使用expire_fragment
代わりに(あなたは、コントローラに送信することができます):http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html#M000438
これは私にとっては役に立ちません。これがうまくいかない場合は、 'Rails.cache.delete_matched 'views/site_search_form *'' – yivo
Rails 3では、フラグメントキャッシュの最後にハッシュがあります。このハッシュは、ビューの内容に基づいていますが生成される。これは、ビューが変更された場合にキャッシュが自動的に破棄されるため、キーで期限切れにするのが難しくなります。キャッシュ呼び出しで 'skip_digest:true'でハッシュを追加しないようにRailsに指示することができます。詳細情報:https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –
ActionController :: Base.new.expire_fragment(キー)のRails 5では
ruby-1.8.7-p334:007> ActionController NoMethodError:未定義のメソッド 'host_with_port 'for nil:NilClass – pixelearth
Rails 3の時点で、フラグメントキャッシュの最後にハッシュがあります(:: controller =>' main '、:action =>' index ')これは、生成されたビューの内容に基づいています。これは、ビューが変更された場合にキャッシュが自動的に破棄されるため、キーで期限切れにするのが難しくなります。キャッシュ呼び出しで 'skip_digest:true'でハッシュを追加しないようにRailsに指示することができます。詳細情報:https://www.reinteractive.net/posts/197-if-you-explicitly-expire-cached-fragments-opt-out-of-cache-digests –
Rails.cache.delete "views/site_search_form"
は、私はバストには、次の手順を取りましたキャッシュは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
キーワード引数に基づいてダイジェストを把握します。
実行中のRailsのバージョンは?キャッシュ削除メソッドが2.1で追加されました。 – vrish88