4

私のプロジェクトでは、Webサービスを使用してDBからデータを取得し、Webサービスからキャッシュにデータを入力します。絶対有効期限を使用していますが、期間は4時間に設定されています。したがって、4時間後にキャッシュが期限切れになるため、Webサービスが呼び出されてキャッシュにデータが再入力されます。

現在発生している問題は次のとおりです。

Webサービスとデータベース間の接続の確立に問題があり、Webサービスがデータを返さない場合があります。

この場合、キャッシュにはすべてのフィールドにnull値が入力され、最大4時間のキャッシュ(再び期限切れになるまで)には再入力されません。

私は2種類の解決策を探しています:1)有効期限が切れる前にキャッシュを更新してから、Webサービスを呼び出すことができます。Webサービスがデータを取り戻す場合は、キャッシュを上書きします。2)キャッシュが期限切れになることはなく、データが返されるとキャッシュを更新するスレッドが頻繁に生成されます。

しかし、上記のソリューションを実装する方法がわかりませんか?誰かが私に技術的な部分についての洞察を与えることができますか?助けてくれてありがとう!

キャッシュを設定する私の現在のコード:

ctx.Cache.Insert("cachename", cacheValue, null,
              DateTime.Now.AddHours(Int32.Parse(siteViewModel.ApplicationSettings["CacheDurationHours"])), System.Web.Caching.Cache.NoSlidingExpiration, 
             System.Web.Caching.CacheItemPriority.Default,
             null
             );
4

1 に答える 1

4

nullを渡す代わりに、Cache.Insert(..)の最後のパラメーターとしてCacheItemRemovedCallbackを実装します。値を取得してキャッシュを再設定する場合、nullチェックを実行して、当面は古い値を使用できます。

于 2012-09-28T22:07:00.920 に答える