天天看點

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 方法。

注意   Add 和 Insert 方法具有相同的簽名,但它們之間存在細微的差别。首先,調用 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 中移除。

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

  • 您可以使用 Add 或 Insert 方法中的 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 類定義了兩個自動執行該操作的字段:NoAbsoluteExpiration 和NoSlidingExpiration。當定義絕對或彈性過期時間時,隻要将适當的參數設定為其相應的字段值即可。下面的示例使用 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 類。

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

将設有優先級設定的項添加到緩存中

  • 您可以通過在 Add 或 Insert 方法上使用 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 委托通知應用程式。有關完整的示例,請參見從緩存中删除項時通知應用程式。