開発環境でページをキャッシュしているRoRアプリケーション(Ruby v1.8.7; Rails v2.3.5)があります。これはそれほど大きな問題ではなく、キャッシュされたページのa
要素は正しくありません。
Development.rbファイルに変更を加えておらず、コントローラーにキャッシュコマンドを意図的に追加していません。
このサイト(localhost)のブラウザー(OSX上のFirefox 3.5)Cookieとページキャッシュをクリアしようとしました。 Mongrelも再起動しました。何も助けにならないようです。
私は何が欠けていますか?
Development.rbのこの行は、キャッシングが発生しないことを保証します。
config.action_controller.perform_caching = false
Railsキャッシュをクリアするには
Rails.cache.clear
とはいえ、これがキャッシュの問題だとは思いません。ページに変更を加えていますが、反映されていませんか?あなたはおそらくそのページのライブバージョンを見ていませんか?私は一度それをやった(赤面)。
更新:
このコマンドは、コンソールから呼び出すことができます。開発中のアプリケーションを実行していますか?
唯一の選択肢は、レンダリングしようとしているページがレンダリングされているページではないということです。
サーバー出力を見ると、ページが次のようにレンダリングされたときにrenderコマンドを見ることができるはずです。
Rendered shared_partials/_latest_featured_video (31.9ms)
Rendered shared_partials/_s_invite_friends (2.9ms)
Rendered layouts/_sidebar (2002.1ms)
Rendered layouts/_footer (2.8ms)
Rendered layouts/_busy_indicator (0.6ms)
rake tmp:cache:clear
はあなたが探しているものかもしれません。
アセットキャッシュを消去することで、この問題を解決できました。
$ rake assets:clean
/ publicでページの静的バージョンを確認し、存在する場合は削除します。 Rails 3.xがページをキャッシュすると、静的バージョンがパブリックフォルダーに残り、ユーザーがサイトにアクセスしたときにロードされます。これは、キャッシュをクリアした後でも残ります。
フラグメントキャッシュ を実行している場合、次のようにキャッシュキーを更新することにより、手動でキャッシュを解除できます。
<% cache ['cool_name_for_cache_key', 'v1'] do %>
<% cache ['cool_name_for_cache_key', 'v2'] do %>
または、次のように、ActiveRecordオブジェクトなどの非静的オブジェクトの状態に基づいてキャッシュを自動的にリセットできます。
<% cache @user_object do %>
この^メソッドを使用すると、ユーザーオブジェクトが更新されるたびに、キャッシュが自動的にリセットされます。