4

基本的に外部 REST/JSON Web サービスを呼び出し、いくつかのパラメーターを渡し、その結果をテーブルでユーザーに返すために使用される小さなWeb アプリケーションを構築しています。

この外部サービスからのデータは頻繁に (おそらく 1 日に 1 回) 変更されることはなく、同じクエリに対して Web サービスを何度も呼び出さないようにしたいと考えています。

ある種のキャッシングを実装する良い方法は何でしょうか?

現時点では、私は何かをまとめています(これはうまくいきますが、正しい方法ではないと思います):

  1. ユーザーが検索パラメータを入力

  2. {リストから結果を選択するLINQクエリ}を試してください

  3. Catch { Web サービスを呼び出し、リストに結果を入力してから、LINQ クエリを再実行します。それでも結果が返されない場合は、例外をスローします}

一日の終わりにリストを空にして、毎日再構築すると思います。

コードは少し乱雑ですが、ほとんどの場合は機能しているようです。これを達成するためのより良い方法はありますか?

4

2 に答える 2

4

System.Web.HttpContext.Current.Cache など、有効期限ポリシーを処理する既存のキャッシュ クラスの 1 つを使用することをお勧めします。クエリ パラメータからキャッシュ キーを作成し、最初にキャッシュで検索できます。データがそこにない場合は、Web サービスを呼び出して、たとえば 12 時間の絶対有効期限で結果をキャッシュに追加できます。それでも結果がない場合は、例外をスローします。

.Net 4 を使用している場合は、System.Runtime.Caching 名前空間にいくつかの追加のキャッシュ オプションがあるか、エンタープライズ ライブラリにキャッシュ アプリケーション ブロックがあります。

于 2013-01-05T13:03:53.037 に答える
1

このチュートリアルなどで説明されている、組み込みの ASP.NET MVC 出力キャッシュ機能を確認することをお勧めします。

短縮版:

[OutputCache(Duration=%duration_in_seconds%, VaryByParam="none")]結果をキャッシュする MVC メソッドに属性を追加するだけです。

于 2013-01-05T13:07:36.710 に答える