0

jstreeJSONを使用してWCFサービスを介してDBからデータをロードするがあります。

jstreeの名前変更コンテキストメニュー項目を「動作」させることができました。つまり、ajax呼び出しをjstree名前変更イベントにバインドしたため、ユーザーがノードの名前を変更すると、データベースを更新する(「保存」する)ようにWCFメソッドに指示します。新しい名前)。

問題:別のページに移動して後で戻った場合、ノードが古い名前に戻っています!

jstree、ブラウザ、またはWCFのいずれかで、ある種のキャッシュが実行されているようですが、ツリーが何らかの形で更新されていません。

データは、JSONを介したWCFサービスメソッドを介してデータベースから取得されます。最初にページにアクセスすると、データが読み込まれます。しかし、ページに戻ったときはそうではありません。サーバー側のloadメソッドのブレークポイントに到達することはありません。私には次のいずれかが考えられます。

  • jstreeはデータをキャッシュし、再度ロードしようとはしません(しかし、なぜ名前が変更されたままにならないのですか?)

また

  • jstreeはサービスに問い合わせますが、WCFは実際にサービスメソッドを実行するのではなく、キャッシュから同じデータを再度提供します。

また

  • ブラウザはリクエストをキャッシュし、WCFメソッドを呼び出さずに同じ結果をjstreeに返します。

何か案は?どうすればこれを確認できますか?

4

1 に答える 1

1

キャッシュの問題があるかどうかわからないのでjstree、次の行から呼び出す WCF メソッドに含めることをお勧めします (たとえば、メソッド本体の最初の行として)。

WebOperationContext.Current.OutgoingResponse.Headers.Set (
    HttpResponseHeader.CacheControl,
    "max-age=0");

キャッシュの再検証に従います。そのため、おそらく使用される Web ブラウザーまたはプロキシーは、サーバーでの再検証 (同じ WCF メソッドの呼び出し) なしでは、キャッシュされたデータのバージョンを使用しません。他のキャッシュ制御オプションの使用を検討することもできます。

于 2010-12-17T10:10:10.927 に答える