ASP.NET Web アプリケーション (1 つのインスタンス) に対して最大 1 時間、非常に少量のデータをキャッシュする必要があります。明らかに、これはスレッドセーフである必要があるため、リクエスト内からキャッシュにアクセスできます。
これを「進行中」に行い、外部のものは使用したくありません。
これを実装する最も簡単な方法は何でしょうか?
ASP.NET Web アプリケーション (1 つのインスタンス) に対して最大 1 時間、非常に少量のデータをキャッシュする必要があります。明らかに、これはスレッドセーフである必要があるため、リクエスト内からキャッシュにアクセスできます。
これを「進行中」に行い、外部のものは使用したくありません。
これを実装する最も簡単な方法は何でしょうか?
ASP.NET が提供するCacheオブジェクトを使用できます。
存在する場合はキャッシュされたオブジェクトを返し、そうでない場合はdbから取得するプロパティを作成できます。
private myClass myProp {
get{
if (Cache["Key1"] == null)
Cache.Add("Key1", "Value 1", null, DateTime.Now.AddMinutes(60), Cache.NoSlidingExpiration, CacheItemPriority.High);
return (myClass)Cache["Key1"];
}
}
静的変数を使用します。更新ロジック (最大 1 時間)を含む静的キャッシュ クラスを記述し、取得したデータを静的メンバーに格納できます。
クラスは、リサイクルされるまでアプリ プールに保持されます。これは、ユースケースに対して頻繁すぎるか、またはめったにない可能性があります。しかし、キャッシング能力は十分に公平でなければなりません。
スレッド セーフの問題については、このクラスで getter メソッドを提供し、lock
statementを利用できます。