ASP.NET緩存的種類及特點淺析
ASP.NET 2.0提供了一些新的用于提升程序性能的技術(shù)特性,其中,緩存技術(shù)是非常重要的一個特性,它提供了一種非常好的本地數(shù)據(jù)緩存機制,可以非常容易的定制屬于數(shù)據(jù)緩從,從而有效的提高數(shù)據(jù)訪問的性能。
緩存有一個不太容易克服的缺點,那就是數(shù)據(jù)過期的問題。最典型的情況是,如果將數(shù)據(jù)庫表中的數(shù)據(jù)內(nèi)容緩存到服務器內(nèi)存中,當數(shù)據(jù)庫表中的記錄發(fā)生更改時,Web應用程序則很可能顯示過期的、不準確的數(shù)據(jù)。對于某些類型的數(shù)據(jù),即使顯示的信息過期,影響也不會很大。然而,對于實時性要求比較嚴格的數(shù)據(jù),例如,股票價格、拍賣出價之類信息,顯示的數(shù)據(jù)稍有過期都是不可接受的。
ASP.NET 2.0支持以下幾種緩存
ASP.NET緩存之頁面輸出緩存
頁面輸出緩存是最為簡單的緩存機制,該機制將整個 ASP.NET頁面內(nèi)容保存在服務器內(nèi)存中。當用戶請求該頁面時,系統(tǒng)從內(nèi)存中輸出相關數(shù)據(jù),直到緩存數(shù)據(jù)過期。在這個過程中,緩存內(nèi)容直接發(fā)送給用戶,而不必再次經(jīng)過頁面處理生命周期。通常情況下,頁面輸出緩存對于那些包含不需要經(jīng)常修改內(nèi)容的,但需要大量處理才能編譯完成的頁面特別有用。需要讀者注意的是,頁面輸出緩存是將頁面全部內(nèi)容都保存在內(nèi)存中,并用于完成客戶端請求。
ASP.NET緩存之頁面部分緩存
頁面部分緩存是指輸出緩存頁面的某些部分,而不是緩存整個頁面內(nèi)容。實現(xiàn)頁面部分緩存有兩種機制:一種是將頁面中需要緩存的部分置于用戶控件(.ascx 文件)中,并且為用戶控件設置緩存功能(包含用戶控件的頁面可設置也可不設置緩存)。這就是通常所說的“控件緩存”。設置控件緩存的實質(zhì)是對用戶控件進行緩存配置。主要包括以下3種方法:一是使用@ OutputCache指令以聲明方式為用戶控件設置緩存功能,二是在代碼隱藏文件中使用PartialCachingAttribute類設置用戶控件緩存;三是使用ControlCachePolicy類以編程方式指定用戶控件緩存設置。另外,還有一種稱為“緩存后替換”的方法。該方法與控件緩存正好相反,將頁面中的某一部分設置為不緩存,因此,盡管緩存了整個頁面,但是當再次請求該頁時,將重新處理那些沒有設置為緩存的內(nèi)容。
ASP.NET緩存之應用程序數(shù)據(jù)緩存
應用程序數(shù)據(jù)緩存提供了一種編程方式,可通過鍵/值對將任意數(shù)據(jù)存儲在內(nèi)存中。使用應用程序緩存與使用應用程序狀態(tài)類似。但是,與應用程序狀態(tài)不同的是,應用程序數(shù)據(jù)緩存中的數(shù)據(jù)是易失的,即數(shù)據(jù)并不是在整個應用程序生命周期中都存儲在內(nèi)存中。應用程序數(shù)據(jù)緩存的優(yōu)點是由ASP.NET管理緩存,它會在項過期、無效,或內(nèi)存不足時移除緩存中的項,還可以配置應用程序緩存,以便在移除項時通知應用程序。
ASP.NET緩存之緩存依賴
Net 2.0引入的自定義緩存依賴項,特別是基于MS-SQL Server的SqlCacheDependency特性,使得我們可以避免“數(shù)據(jù)過期”的問題,它能夠根據(jù)數(shù)據(jù)庫中相應數(shù)據(jù)的變化,通知緩存,并移除那些過期的數(shù)據(jù)
緩存功能也有其自身的不足。例如,顯示的內(nèi)容可能不是最新、最準確的,為此,必須設置合適的緩存策略。又如,緩存增加了系統(tǒng)的復雜性并使其難于測試和調(diào)試,因此建議在沒有緩存的情況下開發(fā)和測試應用程序,然后在性能優(yōu)化階段啟用緩存選項。
ASP.NET緩存的相關就介紹到這里,希望對你了解ASP.NET緩存有所幫助。
【編輯推薦】