2017-08-07 14 views
0

Rails 4.2アプリケーションは、以下の構成(キャッシュ関連)で稼動しています。これまでのキャッシング手法は実装されていません(デフォルト設定)。Rails 4キャッシュ:特定のコントローラアクションまたはビューのデフォルトキャッシュを無効にする方法はありますか?

config.action_controller.perform_caching = true 

# Use a different cache store in production. 
# config.cache_store = :mem_cache_store 

特定のビューに問題があり、それに応じて更新されたデータが表示されません。

アプリケーション全体ではなく特定のビューでフラグメントキャッシュを無効にする方法はありますか?

+1

理由だけではなく、そのビューから、あなたの 'キャッシュsome_model do'ブロックを削除しませんか? – omnikron

+0

@omnikron - そのようなコードはビューに書き込まれません。私はRailsが内部的に扱うと思う。 –

+0

いいえ、あなたは 'cache'を明示的に呼び出す必要があります。そうしないと、ビューは単にキャッシュされません。それがどこにもない場合は、あなたが何か他のことをしていない限り、あなたの意見はキャッシュされません。詳細は、[rails caching documentation](http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching)を参照してください。 「デフォルトではRailsはフラグメントキャッシュを提供しています」と混乱していたのでしょうか?これは単にデフォルトで利用可能であることを意味します。実際には実装されていません。 – omnikron

答えて

1

TLDR:キャッシュで問題が発生する可能性がありますが、修正する前に実際に使用していることを確認する価値があります。

単一のビューのキャッシュを無効にする最も簡単な方法は、また、(欠場するのは非常に簡単ですが、潜在的に)最も明白です:

は、ビュー内からcache model doブロックを削除します。

Railsはデフォルトでキャッシングを行いません。このため、完全に処理されます。ビュー内にブロックがあるcacheへの電話がない場合、はキャッシングを使用していません

例えば:

キャッシュ:キャッシュされていない

# app/views/something_important/show.html.haml 
= cache something_important do 
    = render_something_expensive 

# app/views/something_important/show.html.haml 
= render_something_expensive 
関連する問題