ASP.Net缓存 1
提高性能最好最快的辦法當然是通過緩存來改善,對于任何一個web開發者都應該善用緩存。Asp.net下的緩存機制十分強大,用好緩存機制可以讓我們極大的改善web應用的性能,下面是一些總結的緩存的知識點,與大家分享交流:
1.頁面緩存
要實現頁面輸出緩存,只要將一條 OutputCache 指令添加到頁面即可。
CacheProfile
用于定義與該頁關聯的緩存設置的名稱。是可選屬性,默認值為空字符("")。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。在頁面中指定此屬性時,屬性值必須與Web.config文件配置節下的outputCacheProfiles元素中的一個可用項的名稱匹配。如果此名稱與配置文件項不匹配,將引發異常。
NoStore
該屬性定義一個布爾值,用于決定是否阻止敏感信息的二級存儲。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。將此屬性設置為true等效于在請求期間執行代碼“Response.Cache.SetNoStore();”。
Duration
用于設置頁面或者用戶控件緩存的時間。單位是秒。通過設置該屬性,能夠為來自對象的HTTP響應建立了一個過期策略,并將自動緩存頁或用戶控件輸出。需要注意的是,Duration屬性是必需的,否則將會引起分析器錯誤。
Shared
該屬性定義一個布爾值,用于確定用戶控件輸出是否可以由多個頁共享。默認值為false。注意,包含在ASP.NET頁中的@ OutputCache指令不支持此屬性。
Location
用于指定輸出緩存項的位置。其屬性值是OutputCacheLocation枚舉值,它們是Any、Client、Downstream、None、Server和ServerAndClient。默認值是Any,表示輸出緩存可用于所有請求,包括客戶端瀏覽器、代理服務器或處理請求的服務器上。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。
SqlDependency
該屬性標識一組數據庫/表名稱對的字符串值,頁或控件的輸出緩存依賴于這些名稱對。需要注意:SqlCacheDependency類監視輸出緩存所依賴的數據庫中的表,因此,當更新表中的項時,使用基于表的輪詢將從緩存中移除這些項。當通知(在SQL Server 2005中)與CommandNotification值一起使用時,最終將使用SqlDependency類向SQL Server 2005服務器注冊查詢通知。另外,SqlDependency屬性的CommandNotification值僅在ASP.NET頁中有效。控件只能將基于表的輪詢用于@ OutputCache指令。
VaryByControl
該屬性使用一個分號分隔的字符串列表來更改用戶控件的輸出緩存。這些字符串代表在用戶控件中聲明的ASP.NET服務器控件的ID屬性值。除非已經包含了VaryByParam屬性,否則在@ OutputCache指令中,該屬性是必需的。
VaryByCustom
用于自定義輸出緩存要求的任意文本。如果賦予該屬性值是browser,緩存將隨瀏覽器名稱和主要版本信息的不同而異。如果輸入了自定義字符串,則必須在應用程序的Global.asax文件中重寫HttpApplication.GetVaryByCustomString方法。
VaryByHeader
該屬性中包含由分號分隔的HTTP標頭列表,用于使輸出緩存發生變化。當將該屬性設為多標頭時,對于每個指定的標頭,輸出緩存都包含一個請求文檔的不同版本。VaryByHeader屬性在所有HTTP 1.1緩存中啟用緩存項,而不僅限于ASP.NET緩存。用戶控件中的@ OutputCache指令不支持此屬性。
VaryByParam
該屬性定義了一個分號分隔的字符串列表,用于使輸出緩存發生變化。默認情況下,這些字符串與用GET方法屬性發送的查詢字符串值對應,或與用POST方法發送的參數對應。當將該屬性設置為多參數時,對于每個指定的參數,輸出緩存都包含一個請求文檔的不同版本。可能的值包括“none”、“*”和任何有效的查詢字符串或POST參數名稱。值得注意的是,在輸出緩存ASP.NET頁時,該屬性是必需的。它對于用戶控件也是必需的,除非已經在用戶控件的@ OutputCache指令中包含了VaryByControl屬性。如果沒有包含,則會發生分析器錯誤。如果不需要使緩存內容隨任何指定參數發生變化,則可將該值設為“none”。如果要使輸出緩存根據所有參數值發生變化,則將屬性設置為“*”。
創建頁面輸出緩存文件依賴
示例代碼:Response.AddFileDependency(MapPath("test.xml"));
如需要建立依賴多文件關系,則使用AddFileDependencies()方法。
使用編程方式設置頁面緩存過期
示例代碼:HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/test.aspx"));
此方法只接受一個"虛擬絕對"路徑,因此需用Page.ResolveUrl()方法轉換
使用編程方式設置多個頁面緩存過期(創建鍵依賴(key dependency))
示例代碼:
緩存頁面:PageLoad:
???? Cache.Insert(“key”,DateTime.Now); Response.AddCacheItemDependency("key"); |
通過此法向多個頁面添加依賴項
移除依賴項:PageLoad:
Cache.Remove("key");
以編程方式操作頁面輸出緩存
操作由Response.Cache屬性暴露的HttpCachePolicy類對象的方法。
創建頁面輸出緩存配置
| <system.web> 資料引用:http://www.knowsky.com/534693.html |
2.部分頁面緩存
緩存后替換
采用聲明方式,使用Substitution控件,設置MethodName屬性所需的方法,此方法必須是靜態方法,因為當前頁輸出緩存時,頁面實例還沒被創建。注:AdRotator內部使用了緩存后替代。
以編程方式設置緩存后替換,使用Response.WriteSubstitution()方法,好處:1,此方法引用的方法不一定是當前類的方法,可以是另一個類的實力或靜態方法。2,可以在自定義控件中使用此方法實現緩存后替換。
部分頁面緩存:用戶控件緩存
給用戶控件添加指令。此指令包含一個Shared屬性,可設置共享用戶控件的輸出緩存。
以編程方式設置用戶控件緩存
當用戶控件中包括指令時,可以通過用戶控件的CachePolicy屬性所暴露的ControlCachePolicy類的實例的屬性控制修改空間如何緩存。
創建用戶控件緩存的文件依賴
可以使用CacheControlPolicy.Dependency屬性在一個緩存了的用戶控件和文件系統中一個文件間創建一個依賴,示例代碼:
PageLoad:
???? CacheDependency?depend=new?CacheDependency(MapPath("~/test.xml")); this.CachePolicy.Dependency=depend; |
緩存動態載入的用戶控件
可以使用Page.LoadControl()方法載入用戶控件,當具有緩存特性的用戶控件被載入時,Asp.net Framework自動一個PartialCachingControl類的實例包裝用戶控件。示例代碼:
PageLoad:
????? PartialCachingControl?cacheme=(PartialCachingControl)Page.LoadControl("test.ascx"); Cacheme.CachePolicy.SetExpires(DateTime.Now.AddSeconds(10)); PlaceHolder1.Controls.Add(cacheme); Lable1.Text=cacheme.CachePolicy.Duration.ToString(); |
3.使用DataSource緩存
SqlDataSource、ObjectDataSource、XmlDataSource控件都包括了用于緩存DataSource承載的屬性,好處是數據源控件可以在數據更新時自動重新載入數據。并且可以在多個頁面間共享相同的數據,通過一些屬性的組合來識別:SelectCommand、SelectParameters、ConnectionString。如果屬性相同,即共享相同的緩存數據。
通過設置屬性設置緩存過期策略
包括絕對緩存(EnableCaching="True" CacheDuration=“xxx”)和Sliding緩存(EnableCaching="True" CacheExpirationPolicy="Sliding" CacheDuration=“xxx”)
使用ObjectDataSource控件緩存
通過設置控件的EnableCaching、CacheExpirationPolicy、CacheDuration屬性以及SelectMethod所制定的方法名來完成。
使用XmlDataSource控件緩存
設置DataFile屬性創建一個文件依賴。
創建數據源控件鍵值依賴
轉載于:https://www.cnblogs.com/qiaojun/articles/1514041.html
總結
以上是生活随笔為你收集整理的ASP.Net缓存 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word 2003安全模式修复程序
- 下一篇: Iometer 性能测试:理论/应用性能