ASP.NETキャッシュ全解析4:アプリケーションデータキャッシュはネットワークの原文作者李天平から転載する

4426 ワード

System.Web.Cachingネーミングスペースは、サーバ上でよく使用されるデータをキャッシュするクラスを提供します.このネーミングスペースにはCacheクラスが含まれています.このクラスは辞書で、ハッシュ・テーブルやデータセットなどの任意のデータ・オブジェクトを格納できます.また、これらのオブジェクトに無効な機能を提供し、これらのオブジェクトを追加および削除する方法も提供します.また、他のファイルまたはキャッシュ・アイテムに依存するオブジェクトを追加し、Cacheオブジェクトからオブジェクトを削除したときにコールバックを実行してアプリケーションに通知することもできます.
/// <summary>///           CacheKey Cache    
/// </summary>
/// <param name="CacheKey"> </param>
/// <returns> </returns>
public static object GetCache(string CacheKey){
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
/// <summary>
/// CacheKey Cache
/// </summary>
/// <param name="CacheKey"> </param>
/// <param name="objObject"> </param>
public static void SetCache(string CacheKey, object objObject)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
  objCache.Insert(CacheKey, objObject);
}
/// <summary>
/// CacheKey Cache
/// </summary>
/// <param name="CacheKey"> </param>
/// <param name="objObject"> </param>
/// <param name="absoluteExpiration"> </param>
/// <param name="slidingExpiration"> </param>
public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
  objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
}
protected void Page_Load(object sender, EventArgs e)
{
  string CacheKey = "cachetest";
  object objModel = GetCache(CacheKey);//
  if (objModel == null)//
{
    objModel = DateTime.Now;//
if (objModel != null)
{
int CacheTime = 30;// ///<summary>/// CacheKey Cache
///</summary>
///<param name="CacheKey"> </param>
///<returns> </returns>
public static object GetCache(string CacheKey){
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[CacheKey];
}
///<summary>
/// CacheKey Cache
///</summary>
///<param name="CacheKey"> </param>
///<param name="objObject"> </param>
public static void SetCache(string CacheKey, object objObject)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
  objCache.Insert(CacheKey, objObject);
}
///<summary>
/// CacheKey Cache
///</summary>
///<param name="CacheKey"> </param>
///<param name="objObject"> </param>
///<param name="absoluteExpiration"> </param>
///<param name="slidingExpiration"> </param>
public static void SetCache(string CacheKey, object objObject, DateTime absoluteExpiration, TimeSpan slidingExpiration)
{
  System.Web.Caching.Cache objCache = HttpRuntime.Cache;
  objCache.Insert(CacheKey, objObject, null, absoluteExpiration, slidingExpiration);
}
protected void Page_Load(object sender, EventArgs e)
{
  string CacheKey = "cachetest";
  object objModel = GetCache(CacheKey);//
  if (objModel == null)//
{
    objModel = DateTime.Now;//
if (objModel != null)
{
 int CacheTime =30;// 30

SetCache(CacheKey, objModel, DateTime.Now.AddSeconds(CacheTime), TimeSpan.Zero);//
}
}
Label1.Text = objModel.ToString();
}

以上のいくつかの方法はデータキャッシュの問題をよく解決したが、最大の問題はデータが変化したとき、キャッシュに期限切れのデータがあるか、キャッシュが期限切れになってから最新のデータを再取得することであり、このようにすると、ユーザーが取得したデータは実際のデータと一致しない期限切れのデータであることが多い.これもユーザーに大きな迷惑をかけていますが、どうすればいいですか?続いて下を見る.