データベースに保存されているリソースの詳細を表示するビューがあります。一部の詳細はリソース モデル自体に属し、一部の詳細は関連モデルに属します。
ビューでは、詳細にフラグメント キャッシングを使用します。
ユーザーがビューのボタンを押すと、ビューの一部がフォームに置き換えられるため、ユーザーは新しいページをロードせずに詳細を編集できます。フォームを開いた時点でキャッシュの有効期限が切れています(実際に確認しました)。ユーザーがフォーム ( ) を送信するusing :remote => true
と、フォームは非表示になり、jQuery を使用して元のコンテンツがリロードされ、部分的にレンダリングされます。
これまでのところ、すべてがうまく機能しています。<% cache ... do %>
と内のコードから、元のコンテンツが新しい値で正しく再読み込みされます<% end %>
。
奇妙なことに、ページをリロードすると、新しい値の一部が消えてしまいます。代わりに、いくつかの古い値が表示されます (最後の送信後にキャッシュされているはずの値)。さらに奇妙なのは、間違った値と同じ新しいキャッシュ ファイルにある場合でも、一部の値が更新されることです。
私が見る限り、関連付けられたモデルの値は正しく、リソース モデルの値は間違っています (古い)。SQLキャッシュと関係があるのではないかと思っていましたが、ページをリロードするときにSQLキャッシュを空にする必要があると思うので、そうではないと思います。
フォームを開いて再度送信すると、データが更新され、すべて問題ありません。つまり、最後の送信からのデータがキャッシュに入っています。送信前にフォームのデータを変更しても、キャッシュ ファイルに含まれるのは最後の送信のデータのままです。そのため、他のフィールドが正しく更新されていても、Resource モデル用に送信されたデータが 1 回送信されるのが遅れているようです。
development.rb でキャッシュをオフにすると、すべてが期待どおりに機能します。すべてのデータは毎回更新されます。
ちなみに、私のサーバーにも同じ問題があります。
手がかりを持っている人はいますか?