ASP.NET 2.0提供了一些新的用於提升程式效能的技術特性,其中,快取技術是非常重要的一個特性,它提供了一種非常好的本地資料快取機制,可以非常容易的客製化屬於資料緩從,從而有效的提高資料存取的效能。
快取有一個不太容易克服的缺點,那就是資料過期的問題。最典型的情況是,如果將資料庫表中的資料內容快取到伺服器記憶體中,當資料庫表中的記錄發生變更時,Web應用程式則很可能顯示過期的、不準確的資料。對於某些類型的數據,即使顯示的資訊過期,影響也不會很大。然而,對於即時性要求比較嚴格的數據,例如,股票價格、拍賣出價之類信息,顯示的數據稍有過期都是不可接受的。
ASP.NET 2.0支援以下幾種快取頁面輸出快取頁面輸出快取是最簡單的快取機制,該機制將整個ASP.NET頁面內容保存在伺服器記憶體中。當使用者請求該頁面時,系統會從記憶體輸出相關數據,直到快取資料過期。在這個過程中,快取內容直接發送給用戶,而不必再次經過頁面處理生命週期。通常情況下,頁面輸出快取對於那些包含不需要經常修改內容的,但需要大量處理才能編譯完成的頁面特別有用。需要讀者註意的是,頁面輸出快取是將頁面全部內容保存在記憶體中,並用於完成客戶端請求。
頁面部分緩存
頁面部分快取是指輸出快取頁面的某些部分,而不是快取整個頁面內容。實作頁面部分快取有兩種機制:一種是將頁面中需要快取的部分置於使用者控制項(.ascx檔案)中,並且為使用者控制項設定快取功能(包含使用者控制項的頁面可設定也可不設定快取) 。這就是通常所說的「控件快取」。設定控件快取的實質是對使用者控件進行快取配置。主要包括以下3種方法:一是使用@ OutputCache指令以宣告方式為使用者控制項設定快取功能,二是在程式碼隱藏檔案中使用PartialCachingAttribute類別設定使用者控制項快取;三是使用ControlCachePolicy類別以程式指定使用者控制項快取設定.另外,還有一種稱為「快取後替換」的方法。此方法與控制項快取正好相反,將頁面中的某一部分設為不緩存,因此,儘管快取了整個頁面,但是當再次請求該頁時,將重新處理那些沒有設定為快取的內容。
應用程式資料快取應用程式資料快取提供了一種程式設計方式,可透過鍵/值對將任意資料儲存在記憶體中。使用應用程式快取與使用應用程式狀態類似。但是,與應用程式狀態不同的是,應用程式資料快取中的資料是易失的,即資料並不是在整個應用程式生命週期中都儲存在記憶體中。應用程式資料快取的優點是由ASP.NET管理緩存,它會在項目過期、無效,或記憶體不足時移除快取中的項,也可以配置應用程式緩存,以便在移除項目時通知應用程式。
快取依賴
Net 2.0引入的自訂快取依賴項,特別是基於MS-SQL Server的SqlCacheDependency特性,使得我們可以避免「資料過期」的問題,它能夠根據資料庫中相應資料的變化,通知緩存,並移除那些過期的資料
快取功能也有其自身的不足。例如,顯示的內容可能不是最新、最準確的,為此,必須設定合適的快取策略。又如,快取增加了系統的複雜性並使其難以測試和調試,因此建議在沒有快取的情況下開發和測試應用程序,然後在效能最佳化階段啟用快取選項。