天天看點

ASP.NET緩存概述[轉載]

生成高性能、可縮放的 Web 應用程式最重要的因素之一是能夠在首次請求項時将這些項存儲在記憶體中,不管它們是資料對象、頁還是頁的某些部分。可以将這些項緩存或存儲在 Web 伺服器上或請求流中的其他軟體上,如代理伺服器或浏覽器。能夠避免重新建立滿足先前請求的資訊,尤其是那些需要大量處理器時間或資源的資訊。

    ASP.NET 提供了兩種方式來建立高性能 Web 應用程式的緩存類型。第一種類型是輸出緩存,它允許将動态頁和使用者控件響應存儲在輸出流(從發起伺服器到請求浏覽器)中任何具備 HTTP 1.1 緩存功能的裝置上。當後面的請求發生時,不執行頁或使用者控件代碼,緩存的輸出用于滿足該請求。第二種類型的緩存是應用程式資料緩存,可以使用它以程式設計方式将任意對象(如應用程式資料)存儲到伺服器記憶體中,以節省重新建立這些對象所需的時間和資源。

    ASP.NET 2.0支援以下幾種緩存:

    1.頁面輸出緩存

    将ASP.NET頁面儲存在伺服器的記憶體中,當使用者請求該頁面的時候,直接從記憶體中輸出相關資料,不必再次經過頁處理生命周期。

    頁輸出緩存提供了兩種頁緩存模型:整頁緩存和部分頁緩存。整頁緩存允許将頁的全部内容儲存在記憶體中,部分頁緩存允許緩存頁的部分内容,其他部分則為動态内容。可以分别為每個頁配置頁緩存,也可以在 Web.config 檔案中建立緩存配置檔案。利用緩存配置檔案,隻定義一次緩存設定就可以在多個頁中使用這些設定。

    部分頁緩存可采用兩種工作方式:控件緩存和緩存後替換。控件緩存允許将資訊包含在一個使用者控件内,然後将該使用者控件标記為可緩存的,以此來緩存頁輸出的部分内容。這一方式可緩存頁中的特定内容,并不緩存整個頁,是以每次都需重新建立整個頁。例如,如果要建立一個顯示大量動态内容(如股票資訊)的頁,其中有些部分為靜态内容(如每周總結),這時可以将靜态部分放在使用者控件中,并允許緩存這些内容。緩存後替換與控件緩存正好相反。這種方式緩存整個頁,但将頁的個别部分标記為不可緩存。

    2.應用程式緩存

    應用程式緩存提供了一種程式設計方式,可通過鍵/值對将任意資料存儲在記憶體中。使用應用程式緩存與使用應用程式狀态類似。但是,與應用程式狀态不同的是,應用程式緩存中的資料是易失的,即資料并不是在整個應用程式生命周期中都存儲在記憶體中。應用程式緩存的優點是由 ASP.NET 管理緩存,它會在項過期、無效、或記憶體不足時移除緩存中的項。還可以配置應用程式緩存,以便在移除項時通知應用程式。

    自動移除資料

    出于以下原因之一,ASP.NET 可以從緩存中移除資料:

    1.由于伺服器上的記憶體不足,開始一個稱為“清理”的過程。

    2.由于緩存中的項已過期。

    3.由于項的依賴項發生了更改。

注解:

清理:清理是在記憶體不足時從緩存中删除項的過程。如果某些項在一段時間内未被通路,或是在添加到緩存中時被标記為低優先級,則這些項會被移除。

過期:在緩存項過期時,ASP.NET 會自動從緩存中移除這些項。向緩存添加項時,可以按下表中的描述設定其過期時間。

過期類型 說明
可調過期 指定某項自上次被通路後多長時間過期。例如,可以将某項設定為自上次在緩存中被通路後 20 分鐘過期。
絕對過期 指定某項在設定的時間過期,而不考慮通路頻率。例如,可以将某項設定為在 6:00 PM 過期,或四小時後過期。

依賴項:可以将緩存中某一項的生存期配置為依賴于其他應用程式元素,如某個檔案或資料庫。當緩存項依賴的元素更改時,ASP.NET 将從緩存中移除該項。ASP.NET 緩存支援下表中描述的依賴項。

依賴項 說明
鍵依賴項 應用程式緩存中的項存儲在鍵/值對中。鍵依賴項允許項依賴于應用程式緩存中另一項的鍵。如果移除了原始項,則具有鍵依賴關系的項也會被移除。例如,可以添加一個名為 ReportsValid 的緩存項,然後緩存若幹個依賴于 ReportsValid 鍵的報告。當 ReportsValid 項被移除時,所有依賴于它的緩存報告同樣也會從緩存中移除。
檔案依賴項 緩存中的項依賴于外部檔案。如果該檔案被修改或删除,則緩存項也會被移除。
SQL 依賴項 緩存中的項依賴于 Microsoft SQL Server 2005、SQL Server 2000 或 SQL Server 7.0 資料庫中表的更改。對于 SQL Server 2005,緩存中的項可依賴于表中的某一行。有關更多資訊,請參見使用 SqlCacheDependency 類在 ASP.NET 中緩存。
聚合依賴項 通過使用 AggregateCacheDependency 類緩存中的項依賴于多個元素。如果任何依賴項發生更改,該項都會從緩存中移除。
自定義依賴項 可以用您自己的代碼建立的依賴關系來配置緩存中的項。例如,可以建立一個自定義 Web 服務緩存依賴項,當調用 Web 服務得到一個特定值時,該依賴項就會從緩存中移除資料。

轉載于:https://www.cnblogs.com/jRoger/articles/1833589.html