系統緩存全解析4:應用程序數據緩存

System.Web.Caching 命名空間提供用於緩存服務器上經常使用數據的類。此命名空間包括 Cache 類,該類是一個字典,您能夠在其中存儲任意數據對象,如哈希表和數據集。它還爲這些對象提供了失效功能,併爲您提供了添加和移除這些對象的方法。您還能夠 添加依賴於其餘文件或緩存項的對象,並在從 Cache 對象中移除對象時執行回調以通知應用程序。緩存

 

///<summary>服務器

///獲取當前應用程序指定CacheKeyCache對象值spa

///</summary>對象

///<param name="CacheKey">索引鍵值</param>索引

///<returns>返回緩存對象</returns>ci

public staticobject GetCache(string CacheKey)string

{io

    System.Web.Caching.Cache objCache =HttpRuntime.Cache;table

    return objCache[CacheKey];test

}

///<summary>

///設置當前應用程序指定CacheKeyCache對象值

///</summary>

///<param name="CacheKey">索引鍵值</param>

///<param name="objObject">緩存對象</param>

public staticvoid SetCache(string CacheKey,object objObject)

{

    System.Web.Caching.Cache objCache =HttpRuntime.Cache;

    objCache.Insert(CacheKey, objObject);

}

///<summary>

///設置當前應用程序指定CacheKeyCache對象值

///</summary>

///<param name="CacheKey">索引鍵值</param>

///<param name="objObject">緩存對象</param>

///<param name="absoluteExpiration">絕對過時時間</param>

///<param name="slidingExpiration">最後一次訪問所插入對象時與該對象過時時之間的時間間隔</param>

public staticvoid 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();

}

 

以上幾種方法都很好的解決了數據緩存的問題,但由一個最大的問題是當數據發生變化了,而緩存裏仍是過時的數據,只有等緩 存過時後纔會從新獲取最新的數據,這樣的話,不少時候用戶獲取的數據都是和實際數據不一致的過時數據。這一樣給用戶形成了比較大的麻煩,怎麼辦呢?接着往 下看。

相關文章
相關標籤/搜索