1

出力キャッシュを必要とする ASP.NET アプリケーションがあります。Web サービスから返されたデータが変更されたときにキャッシュされたアイテムを無効にする必要があるため、単純な期間では十分ではありません。

私はキャッシュの依存関係について少し読んでいて、正しい考えを持っていると思います。Web サービスへのキャッシュ依存関係を作成する必要があるようです。

ページ出力をこの依存関係に関連付けるには、次の方法を使用する必要があると思います。

Response.AddCacheItemDependency(cacheKey);

私が苦労しているのは、キャッシュに何を追加すればよいですか?

私のページの依存関係は、Web サービスによって返される単一の値です。私の現在の考えでは、CacheDependency をサブクラス化してカスタム キャッシュ依存関係を作成し、現在の値をキャッシュに格納する必要があります。次に、Response.AddCacheItemDependency を使用して依存関係を形成します。

その後、値と NotifyDependencyChange を定期的にチェックして、キャッシュされた HTTP 応答を無効にすることができます。

問題は、キャッシュがすぐにフラッシュされるようにする必要があるため、定期的なチェックでは十分ではないということです。HTTP 応答がキャッシュからフェッチされる前に、Web サービスによって返された値を表すキャッシュ内の依存オブジェクトが再評価されるようにするにはどうすればよいですか?

よろしく、コリンE.

4

2 に答える 2

0

次を使用して、キャッシュされたページを手動で無効にすることができます。

System.Web.HttpResponse.RemoveOutputCacheItem(path)
于 2010-01-13T16:46:14.113 に答える
0

キャッシュの依存関係については、正しい方向に進んでいると思います。ただし、Web サービスの戻り値を「定期的にチェック」しない場合、新しい値がいつ返されたかをどのように知ることができるでしょうか。他のシステムで値が変更されたときに、システムを呼び出して古いキャッシュを無効にし、新しい値を保持できるように、Web サービスを別の方向に設定する必要がある場合があります。

于 2010-01-13T16:41:54.170 に答える