ASP.NET 2.0的页面缓存功能介绍
頁面部分緩存是指輸出緩存頁面的某些部分,而不是緩存整個頁面內(nèi)容。實現(xiàn)頁面部分緩存有兩種機制:一種是將頁面中需要緩存的部分置于用戶控件(.ascx文件)中,并且為用戶控件設(shè)置緩存功能(包含用戶控件的ASP.NET頁面可設(shè)置也可不設(shè)置緩存)。這就是通常所說的“控件緩存”。設(shè)置控件緩存的實質(zhì)是對用戶控件進(jìn)行緩存配置。主要包括以下3種方法:一是使用@ OutputCache指令以聲明方式為用戶控件設(shè)置緩存功能,二是在代碼隱藏文件中使用PartialCachingAttribute類設(shè)置用戶控件緩存;三是使用ControlCachePolicy類以編程方式指定用戶控件緩存設(shè)置。另外,還有一種稱為“緩存后替換”的方法。該方法與控件緩存正好相反,將頁面中的某一部分設(shè)置為不緩存,因此,盡管緩存了整個頁面,但是當(dāng)再次請求該頁時,將重新處理那些沒有設(shè)置為緩存的內(nèi)容。
使用@ OutputCache指令
控件緩存與頁面輸出緩存的@ OutputCache指令既有相似之處,又有不同的方面。二者的共同點在于它們的設(shè)置方法基本相同,都是文件頂部設(shè)置包含屬性的@ OutputCache指令字符串。不同點包括以下兩個方面:一是控件緩存的@ OutputCache指令設(shè)置在用戶控件文件中,而頁面輸出緩存的@ OutputCache設(shè)置在普通ASP.NET文件中。二是控件緩存的@ OutputCache指令只能設(shè)置6個屬性,Duration、Shared、SqlDependency、VaryByControl、VaryByCustom和VaryByParam。而在頁面輸出緩存的@ OutputCache指令字符串中設(shè)置的屬性多達(dá)10個。以上是設(shè)置控件緩存時需要注意的問題。下面列舉了一些利用@ OutputCache指令設(shè)置控件緩存的示例,其中重點說明了VaryByParam和VaryByControl等屬性應(yīng)用。
用戶控件中的@ OutputCache指令設(shè)置源代碼
<%@ OutputCache Duration="120" VaryByParam="CategoryID;SelectedID"%>
以上代碼設(shè)置用戶控件緩存有效期時間是120秒,并且允許使用CategoryID和SelectedID參數(shù)來改變緩存。通過VaryByParam屬性設(shè)置,在服務(wù)器緩存中可能存儲多個用戶控件的實例。例如,對于一個包含用戶控件的頁面,可能存在如下的URL鏈接。
包含用戶控件的頁面的URL鏈接
http://localhost/mypage.aspx?categoryid=fooselectedid=0
http://localhost/mypage.aspx?categoryid=fooselectedid=1
當(dāng)請求如上URL地址的頁面時,由于控件中@ OutputCache指令的設(shè)置,尤其是屬性VaryByParam的設(shè)置,那么在服務(wù)器緩存中就會存儲兩個版本的用戶控件緩存實例。
控件緩存設(shè)置除了支持以上所述VaryByParam屬性外,還支持VaryByControl屬性。VaryByParam屬性基于使用POST或者GET方式發(fā)送的名稱/值對來改變緩存,而VaryByControl屬性通過用戶控件文件中包含的服務(wù)器控件來改變緩存。下面是VaryByControl屬性的應(yīng)用示例代碼。
用戶控件中的@ OutputCache指令設(shè)置源代碼
<%@ OutputCache Duration="120" VaryByParam="none" VaryByControl="Category" %>
以上代碼設(shè)置緩存有效期是120秒,并且頁面不隨任何GET或POST參數(shù)改變(即使不使用VaryByParam屬性,但是仍然需要在@ OutputControl指令中顯式聲明該屬性)。如果用戶控件中包含ID屬性為“Category”的服務(wù)器控件(例如下拉框控件),那么緩存將根據(jù)該控件的變化來存儲用戶控件數(shù)據(jù)。
轉(zhuǎn)載于:https://www.cnblogs.com/zcy_soft/archive/2010/10/03/1841625.html
總結(jié)
以上是生活随笔為你收集整理的ASP.NET 2.0的页面缓存功能介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Reactive框架:简化异步及事件驱动
- 下一篇: 120所国家重点建设大学(211工程和教