頁面部分緩存

 頁面部分緩存是指輸出緩存頁面的某些部分,而不是緩存整個頁面內容。實現頁面部分緩存有兩種機制:一種是將頁面中需要緩存的部分置於用戶控件(.ascx文件)中,並且爲用戶控件設置緩存功能(包含用戶控件的ASP.NET頁面可設置也可不設置緩存)。這就是通常所說的“控件緩存”。設置控件緩存的實質是對用戶控件進行緩存配置。主要包括以下3種方法:一是使用@ OutputCache指令以聲明方式爲用戶控件設置緩存功能,二是在代碼隱藏文件中使用PartialCachingAttribute類設置用戶控件緩存;三是使用ControlCachePolicy類以編程方式指定用戶控件緩存設置。另外,還有一種稱爲“緩存後替換”的方法。該方法與控件緩存正好相反,將頁面中的某一部分設置爲不緩存,因此,儘管緩存了整個頁面,但是當再次請求該頁時,將重新處理那些沒有設置爲緩存的內容。  使用@ OutputCache指令   控件緩存與頁面輸出緩存的@ OutputCache指令既有相似之處,又有不同的方面。二者的共同點在於它們的設置方法基本相同,都是文件頂部設置包含屬性的@ OutputCache指令字符串。不同點包括以下兩個方面:一是控件緩存的@ OutputCache指令設置在用戶控件文件中,而頁面輸出緩存的@ OutputCache設置在普通ASP.NET文件中。二是控件緩存的@ OutputCache指令只能設置6個屬性,Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在頁面輸出緩存的@ OutputCache指令字符串中設置的屬性多達10個。以上是設置控件緩存時需要注意的問題。下面列舉了一些利用@ OutputCache指令設置控件緩存的示例,其中重點說明了VaryByParam和VaryByControl等屬性應用。 用戶控件中的@ OutputCache指令設置源代碼 <%@ OutputCache Duration="120" VaryByParam="CategoryID;SelectedID"%>   以上代碼設置用戶控件緩存有效期時間是120秒,並且允許使用CategoryID和SelectedID參數來改變緩存。通過VaryByParam屬性設置,在服務器緩存中可能存儲多個用戶控件的實例。例如,對於一個包含用戶控件的頁面,可能存在如下的URL鏈接。 包含用戶控件的頁面的URL鏈接 http://localhost/mypage.aspx?categoryid=fooselectedid=0 http://localhost/mypage.aspx?categoryid=fooselectedid=1   當請求如上URL地址的頁面時,由於控件中@ OutputCache指令的設置,尤其是屬性VaryByParam的設置,那麼在服務器緩存中就會存儲兩個版本的用戶控件緩存實例。   控件緩存設置除了支持以上所述VaryByParam屬性外,還支持VaryByControl屬性。VaryByParam屬性基於使用POST或者GET方式發送的名稱/值對來改變緩存,而VaryByControl屬性通過用戶控件文件中包含的服務器控件來改變緩存。下面是VaryByControl屬性的應用示例代碼。 用戶控件中的@ OutputCache指令設置源代碼 <%@ OutputCache Duration="120" VaryByParam="none" VaryByControl="Category" %>   以上代碼設置緩存有效期是120秒,並且頁面不隨任何GET或POST參數改變(即使不使用VaryByParam屬性,但是仍然需要在@ OutputControl指令中顯式聲明該屬性)。如果用戶控件中包含ID屬性爲“Category”的服務器控件(例如下拉框控件),那麼緩存將根據該控件的變化來存儲用戶控件數據。
發佈了5 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章