.net System.Web.Caching.Cache緩存類使用詳解

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

        System.Web.Caching.Cache 用於實現 Web 應用程序的緩存。

        對於每個應用程序域均創建該一個實例,並且只要對應的應用程序域保持活動,該實例便保持有效。有關此類實例的信息通過 HttpContext 對象的 Cache 屬性或 Page 對象的 Cache 屬性來提供。

      方法:

  1. Add

                  將指定項添加到 Cache 對象,該對象具有依賴項、過期和優先級策略以及一個委託(可用於在從 Cache 移除插入項時通知應用程序)。如果 Cache 中已保存了具有相同 key 參數的項,則對此方法的調用將失敗。若要使用相同的 key 參數改寫現有的 Cache 項,請使用 Insert 方法.

  2. Insert

                            向 Cache 對象插入項。使用此方法的某一版本改寫具有相同 key 參數的現有 Cache 項。

  3. Remove

                            從應用程序的 Cache 對象移除指定項。

  4. Item / Get

                         提供通過Name找到Value的方法

-----------------------------------------------------------------------------------------------------------------------------------------------

一下是從微軟網上MSDN找到的一篇有關Cache的說明, 內容差不多,但是要更加具體一些:

您可以使用三種不同的技術將項添加到 Cache 對象中。根據應用程序要求的不同,您的選擇可以從簡單到複雜。

如果要利用 Cache 所提供的清理、到期時間和依賴項支持,則必須使用 Cache.Insert 方法或 Cache.Add 方法。

注意   AddInsert 方法具有相同的簽名,但它們之間存在細微的差別。首先,調用 Add 方法返回表示緩存項的對象,而調用 Insert 方法不是。其次,如果您調用這些方法並將已存儲在 Cache 中的某個項添加到 Cache 中,那麼它們的行爲是不同的。Insert 方法替換該項,而 Add 方法失敗。

通過指定其鍵和值將項添加到緩存中

  • 通過指定項的鍵和值,您可以像將項添加到字典中一樣將其添加到緩存中。下面的代碼將文本框的當前 Value 屬性添加到 Cache 中。   
    [Visual Basic]
        Cache("txt1") = txtName.value
        [C#]
        Cache["txt1"] = txtName.value;

通過使用 Insert 方法將項添加到緩存中

  • 重載 Insert 方法,允許您定義正在使用的版本的參數的值。例如,若要只添加項的鍵和值,則使用下面的代碼。   
    [Visual Basic]
        Cache.Insert("MyData1", connectionString)
        [C#]
        Cache.Insert("MyData1", connectionString); 

使用 Add 方法將項添加到緩存中

  • Add 方法與 Insert 方法具有相同的簽名,但它返回表示您所添加項的對象。   
    [Visual Basic]
        Cache.Add("MyData1", connectionString)
        [C#]
        Cache.Add("MyData1", connectionString); 

這兩種方法都使您能夠在很大程度上控制在 Cache 中保留項的條件。兩種方法都支持使緩存的項依賴於外部文件或目錄、Cache 中的其他鍵或任意一個的數組。將設有依賴項的項添加到 Cache 中將創建 CacheDependency 類的實例,它跟蹤對您定義的依賴項的更改。如果這些依賴項的任何一個發生更改(包括被刪除或移動),則將與該依賴項關聯的項從 Cache 中移除。

將設有依賴項的項添加到緩存中

  • 您可以使用 AddInsert 方法中的 dependencies 參數將設有依賴項的項添加到 Cache 中。下面的示例演示使用 Insert 方法將設有依賴項(在 XML 文件上)的項添加到 Cache 中。   
    [C#]
        Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)));
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, new CacheDependency(Server.MapPath(\\myServer\myConfig.xml)))

將設有到期策略的項添加到緩存中

  • 您可以使用 absoluteExpiration parameter 參數和 slidingExpiration 參數將設有到期策略的項添加到 Cache 中。您可以定義絕對過期時間或彈性過期時間,但不能同時定義兩者。在使用上述參數之一定義到期策略時,必須將另一個參數設置爲零。Cache 類定義了兩個自動執行該操作的字段:NoAbsoluteExpirationNoSlidingExpiration。當定義絕對或彈性過期時間時,只要將適當的參數設置爲其相應的字段值即可。下面的示例使用 Insert 方法將設有兩分鐘絕對到期時間的項添加到 Cache 中。   
    [C#]
        Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration);
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, null, DateTime.Now.AddMinutes(2),  NoSlidingExpiration)

    下面的代碼使用 Insert 方法將設有 30 秒彈性過期時間的項添加到 Cache 中。

    [C#]
        Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30));
        [Visual Basic]
        Cache.Insert("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30))
    注意   當設置絕對到期時間時,請使用 DateTime 結構。當設置彈性過期時間時,請使用 TimeSpan 結構。另外,如果您創建的彈性過期時間小於零或大於一年,則將引發 ArgumentOutOfRangeException 類。

您還可以使用 AddInsert 方法通過在 CacheItemPriority 枚舉中指定值定義緩存項的相對重要性。當 Web 服務器進行清理以釋放內存時,這些相對優先級會對它有所幫助。Web 服務器會在移除具有較高優先級的項之前先從 Cache 中移除具有較低優先級的項。

將設有優先級設置的項添加到緩存中

  • 您可以通過在 AddInsert 方法上使用 priority 參數將設有優先級設置的項添加到 Cache 中。下面的示例使用 Add 方法將 priority High 的項添加到 Cache 中。   
    [C#]
        Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null);
        [Visual Basic]
        Cache.Add("MyData1", connectionString, null, NoAbsoluteExpiration, TimeSpan.FromSeconds(30), CacheItemPriority.High, null)  

這些方法還允許在項從緩存中移除時,使用 CacheItemRemovedCallback 委託通知應用程序。有關完整的示例,請參見從緩存中刪除項時通知應用程序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章