ASP.NET緩存通過在內存中存儲頁面輸出來構建一個高性能的,可伸縮的asp.net web應用程序。在隨 後的請求中,網頁代碼不用執行,直接使緩存的輸出用於服務的請求。在本文中,我們專注於ASP.NET頁 面輸出緩存。
這只是在一站式開發技術框架中Silverlight樣例的一部分,你能從http://cfx.codeplex.com/上獲得 更多的例子。
Microsoft All-In-One Code Framework ,微軟通過典型的三種流行的編程語言(Visual C#, VB.NET和Visual C++)編寫代碼示例代碼來描繪微軟主要的開發技術。每個示例是精心挑選,組成的,並 提供測試,或使用的編碼方案。
默認情況下,我們去請求一個ASP.NET 站點,每次請求都將進行多步處理的。 例如頁面的初始化,加 載,渲染等等。這樣會消耗大量的服務器資源。考慮以下情形:許多客戶浏覽ASP.NET的新聞網頁和新聞 網站的頁面幾個小時都不會改變 。基於共同的路線,多個客戶的幾乎在同一時間在請求同一個新聞網頁 ,ASP.NET將執行相同的代碼生成多次相同新聞。這是一種浪費資源的過程。因此,我們開始考慮能否生 成一次響應,它能服務於多個客戶。答案就是緩存。
ASP.NET提供了兩個緩存的方法。輸出緩存(包括頁面級緩存和用戶控件級緩存)和緩存API 。在本文 中,我們將討論輸出緩存。輸出緩存的優點是易於實現,並在大多數情況下是足夠的。它只是在內存中保 存了發送給客戶端輸出和後續請求答辯書的副本,然後用緩存的輸出,直到緩存過期的反應,然後,直到 緩存過期,後續的請求響應緩存輸出。這令人難以置信的提高ASP.NET Web應用程序的性能。
對於ASP.NET輸出緩存,ASP.NET使用@ OutputCache指令,宣布許多屬性來控制ASP.NET頁或頁面上的 用戶控件的 輸出緩存的策略。
代碼
<%@ OutputCache Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None | ServerAndClient "
Shared="True | False"
VaryByControl="controlname"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parametername"
VaryByContentEncoding="encodings"
CacheProfile="cache profile name | ''"
NoStore="true | false"
SqlDependency="database/table name pair | CommandNotification"
%>
在本文中,我們將介紹@ OutputCache的 Duration, VaryByCustom, VaryByParam, 和VaryByControl 屬性來緩存我們的頁面輸出 ,對於其它屬性,您可以參考:http://msdn.microsoft.com/en- us/library/hdxfb6cy.aspx.
下面演練一步一步如何使用它們。在演示中,我們使用的日期時間,以確定頁面是否被緩存。(在頁面 加載事件中,我們將日期時間寫在一個名字為“lblResult”的控件中)