以下のサンプルコードに示すように、ASP.Netのデータキャッシュにリストを挿入しています。私はプログラミング言語としてC#を使用しています。
次の問題の解決策を見つけることができません:
- .1秒から20秒続く可能性のある長いデータベース操作が開始されます。
- この操作の最後に、長い操作が開始されてから(つまり、操作の進行中に)、「dSummary」という名前のキャッシュがデータベースから再挿入または更新されたかどうかを確認する必要があります。
キャッシュアイテムを挿入するために使用するコードは次のとおりです。
List<Doc> ds = GetDocSummary();
System.Web.HttpContext.Current.Cache.Insert("dSummary", ds, null,
DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration);
更新1:
非常に多くの応答を受け取った後、可能な確実なアプローチは、GUID文字列をListオブジェクトと一緒にキャッシュに格納することだと思います。次に、長い操作の前後にキャッシュに格納されているオブジェクトのGUID文字列プロパティを簡単に比較できます。それらが同じである場合、Cache ["dSummary"]は再挿入されていません。それ以外の場合は、再挿入されています。したがって、次の「Doc」クラスの拡張クラスを使用する必要があります。
public class DocX : Doc
{
public UniQueIdentifier { get;set; }
public DocX ( Doc doc, string unqiueIdentifier)
{
this.Doc = doc;
this.UniqueIdentifier = unqiueIdentifier;
}
}
次に、次のコードを使用してキャッシュに挿入します。
List<Doc> ds = GetDocSummary();
System.Web.HttpContext.Current.Cache.Insert("dSummary",new DocX( ds,
new Guid.Newguid().ToString() ), null,
DateTime.Now.AddMinutes(15), System.Web.Caching.Cache.NoSlidingExpiration);