OutputCache各参数的说明【转】
生活随笔
收集整理的這篇文章主要介紹了
OutputCache各参数的说明【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Duration 緩存時間,以秒為單位,這個除非你的Location=None,可以不添加此屬性,其余時候都是必須的。 Location Location當被設置為None時,其余的任何設置將不起作用 Any——頁面被緩存在瀏覽器、代理服務器端和web服務器端; Client——緩存在瀏覽器; DownStream——頁面被緩存在瀏覽器和任何的代理服務器端; None——頁面不緩存; ServerAndClient——頁面被緩存在瀏覽器和web服務器端; 默認為Any 。 !該屬性不支持用戶控件(.ascx文件)中的@OutputCache指令。?? Shared 用來控制用戶控件輸出內容是否能夠被多個頁面共享。默認值為false。 !該屬性不支持ASP.NET頁面(.aspx文件)中的@OutputCache指令。 VaryByCustom 任何自定義輸出緩存的文字。如果將該屬性設置為browser,將會緩存多種的瀏覽器名稱與版本信息。當使用了自定義字符串之后,就必須在應用程序的Global.asax文件中對HttpApplication.GetVaryByCustomString成員進行重載。 VaryByHeader 多個不同輸出緩存所使用的HTTP響應頭信息,并且通過分號進行分隔。當設置為多個響應頭信息時,輸出緩存將會為每個已指定的頭信息緩存多個不同版本的響應文檔。 Accept-Language——代表請求頁面中用戶最希望的有優先級順序的人類語言列表; User-Agent——代表請求頁面設備的類型; Cookie——代表當前域名下創建的瀏覽器的cookie。項。 用戶控件中的@OutputCache指令不支持該屬性。 例如:設置VaryByHeader="Accept-Language" 當網站有多種語言版本時,可以為每種語言都進行緩存 可以更改IE的語言設置:IE—>工具àInternet選項à常規à語言來查看效果 VaryByParam 用于多個輸出緩存的字符串列表,并以分號進行分隔。默認時,該字符串與GET方法傳遞的參數或與POST方法傳遞的變量相對應。當被設置為多個參數時,輸出緩存將會為每個參數都準備一個與之相對應的文檔版本。可能值包括none,*,以及任何有效的查詢串或POST參數名稱。 如果您不想要為不同的已緩存內容指定參數,可以將其設置為none。如果想要指定所有的已緩存內容參數,可以設置為*。 例如: 如果命令設置為: <%@ OutputCache Duration="60"? VaryByParam="ProductType" %> 當請求路徑 bitauto.com/test.aspx?ProductType=1發生時,會建立緩存 當ProductType的值變為2時,系統會建立新的緩存,但是原來的緩存在有效期內并不會失效。相當于為不同的ProductType值建立了不同版本的緩存。如果熟悉.Net數據緩存的話,很類似于下面的用法。 Cache.Add(“productType1”,cachedObject) Cache.Add(“productType2”,cachedObject) VaryByControl 指定用戶控件的輸出緩存列表,并以分號作為分隔。字符串由被定義在用戶控件中的ASP.NET服務器端控件的ID屬性組成。 例如下面:根據頁面上下拉列表控件的選擇的值不同進行不同的緩存輸出 <%@ OutputCache Duration="100" VaryByControl="dropTest"%> SqlDependency 指定緩存失效的數據庫依賴項。可以具體到數據庫和表。 具體配置具體要經過幾個步驟: 1.?????? 注冊連接池 命令:aspnet_regsql -S 192.168.30.220\SQL2K -U sa -P sa -ed -d pubs -et -t test專門注冊連接池的工具 在sql數據庫的數據 庫改變了,才改變緩存。 參數: _s 制定注冊的服務器
_u和 _p 說明是sql數據庫的授權模式、 _d 指定數據庫的名字 _ed 說明緩存生效。 示例: aspnet_regsql -S 192.168.30.220\SQL2K -U sa -P sa -ed -d pubs -et -t test 進行outputcache配置
<%@ OutputCache SqlDependency="pubs:test" Duration="100" VaryByParam="id"%> 2.?????? 設置WebConfig?????? <connectionStrings> <add???????? name="mySqlServer" connectionString="Server=192.168.30.220\SQL2K;Database=pubs;uid=sa;pwd=sa;"/>? </connectionStrings> 3.??????? <caching> <sqlCacheDependency enabled="true"> <databases> <add connectionStringName="mySqlServer" pollTime="500" /> </databases> </sqlCacheDependency> </caching> name:必須是數據庫的名字 connectionStringName:連接字符串的名稱 除了可以建立數據庫依賴,還可以建立文件依賴或者其他依賴(可以看”參考文檔5”)。 CacheProfile 用于定義與該頁關聯的緩存設置的名稱。是可選屬性,默認值為空字符("")。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。在頁面中指定此屬性時,屬性值必須與Web.config文件<outputCacheSettings>配置節下的outputCacheProfiles元素中的一個可用項的名稱匹配。如果此名稱與配置文件項不匹配,將引發異常。 示例: <%@ OutputCache CacheProfile="Cache30Seconds" %> 配置: Web.config <caching> <outputCacheSettings> <outputCacheProfiles> <add name="Cache30Seconds" duration="30" varyByParam="none" /> </outputCacheProfiles> </outputCacheSettings> </caching> Add節里面的各個屬性和OutPutCache相對應 注意OutputCache生命優先于outputCacheProfiles配置 比如:頁面緩存10s, outputCacheProfiles設置緩存20s,則最后緩存10s NoStore bool值,用于決定是否阻止敏感信息的二級存儲,默認值為 false DiskCacheable: 在.Net?? 2.0被遺棄 注:標紅的是經常用的屬性。 UserControl和Page中各命令參數比較(空 表示不支持) 簡單介紹
?Control
?Page
?
Duration
?緩存時間
?支持
?支持
?
Location
?存儲位置
?
?支持
?
Shared
?多頁面共享
?支持
?
?
VaryByParam
?隨參數改變
?支持
?支持
?
VaryByControl
?隨控件改變?
?支持
?
?
VaryByHeader
?Http協議頭
?
?支持
?
VaryByCustom
?自定義改變值
?支持
?支持
?
SqlDependency
?Sql依賴
?支持
?支持
?
CacheProfile
?Cache配置節名稱
?
?支持
?
NoStore
?是否有其他存儲介質
?
?支持
? UserControl和Page中的一些區別: 1.作用范圍:UserControl為頁面局部的緩存,Page為頁面全部的緩存 2.優先級:????? Page緩存優先級高于UserControl 例如: UserControl :?????????? <%@ OutputCache Duration="60"? VaryByParam="ProductType" %> Page? : <%@ OutputCache Duration="60"? VaryByParam=" none" %> 當ProductType =1改變時,Page緩存并不更新(UserControl并不更新) 如果Page去掉 OutputCache命令,則ProductType更新時,Page會更新(Control更新) 4.?????? 頁面生命OutPutCahe緩存策略優先于后臺代碼: 比如<%@ OutputCache? Duration="100" Location="Any" %>緩存100S 代碼:Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); 結果緩存100秒 其他實現: 1.根據不同的語言緩存不同的版本: Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));??????? Response.Cache.SetCacheability(HttpCacheability.Public);??????? Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByHeaders["Accept-Language"] = true; 2.文檔以來緩存: Response.AddFileDependency(Server.MapPath(Request.ApplicationPath + "/Web.Config")); Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); Response.Cache.SetCacheability(HttpCacheability.Public); 參考文檔: 1.?????? ASP.NET 緩存:方法和最佳實踐 http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx?mfr=true 2.?????? 數據緩存中頁面部分和用戶控件部分的說明
http://www.cnblogs.com/chenou/articles/603547.html 3.?????? ASP.NET緩存策略經驗談 http://www.cnblogs.com/imissherso/articles/635563.html 4.?????? ASP.NET 2.0的頁面緩存功能介紹
http://www.cnblogs.com/Joshualang/archive/2007/01/24/OutputCache.html 5.?????? 移除用戶控件的輸出緩存(OutputCache) http://www.cnblogs.com/Truly/archive/2006/10/12/527206.aspx 6.?????? P.NET 2.0 緩存技術 (原創) http://www.cnblogs.com/ghd258/archive/2005/11/03/248896.html 7.?????? 頁面輸出緩存 http://www.cnblogs.com/hide0511/archive/2006/10/21/535702.html
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/laolaolai/archive/2010/02/09/5301212.aspx
_u和 _p 說明是sql數據庫的授權模式、 _d 指定數據庫的名字 _ed 說明緩存生效。 示例: aspnet_regsql -S 192.168.30.220\SQL2K -U sa -P sa -ed -d pubs -et -t test 進行outputcache配置
<%@ OutputCache SqlDependency="pubs:test" Duration="100" VaryByParam="id"%> 2.?????? 設置WebConfig?????? <connectionStrings> <add???????? name="mySqlServer" connectionString="Server=192.168.30.220\SQL2K;Database=pubs;uid=sa;pwd=sa;"/>? </connectionStrings> 3.??????? <caching> <sqlCacheDependency enabled="true"> <databases> <add connectionStringName="mySqlServer" pollTime="500" /> </databases> </sqlCacheDependency> </caching> name:必須是數據庫的名字 connectionStringName:連接字符串的名稱 除了可以建立數據庫依賴,還可以建立文件依賴或者其他依賴(可以看”參考文檔5”)。 CacheProfile 用于定義與該頁關聯的緩存設置的名稱。是可選屬性,默認值為空字符("")。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。在頁面中指定此屬性時,屬性值必須與Web.config文件<outputCacheSettings>配置節下的outputCacheProfiles元素中的一個可用項的名稱匹配。如果此名稱與配置文件項不匹配,將引發異常。 示例: <%@ OutputCache CacheProfile="Cache30Seconds" %> 配置: Web.config <caching> <outputCacheSettings> <outputCacheProfiles> <add name="Cache30Seconds" duration="30" varyByParam="none" /> </outputCacheProfiles> </outputCacheSettings> </caching> Add節里面的各個屬性和OutPutCache相對應 注意OutputCache生命優先于outputCacheProfiles配置 比如:頁面緩存10s, outputCacheProfiles設置緩存20s,則最后緩存10s NoStore bool值,用于決定是否阻止敏感信息的二級存儲,默認值為 false DiskCacheable: 在.Net?? 2.0被遺棄 注:標紅的是經常用的屬性。 UserControl和Page中各命令參數比較(空 表示不支持) 簡單介紹
?Control
?Page
?
Duration
?緩存時間
?支持
?支持
?
Location
?存儲位置
?
?支持
?
Shared
?多頁面共享
?支持
?
?
VaryByParam
?隨參數改變
?支持
?支持
?
VaryByControl
?隨控件改變?
?支持
?
?
VaryByHeader
?Http協議頭
?
?支持
?
VaryByCustom
?自定義改變值
?支持
?支持
?
SqlDependency
?Sql依賴
?支持
?支持
?
CacheProfile
?Cache配置節名稱
?
?支持
?
NoStore
?是否有其他存儲介質
?
?支持
? UserControl和Page中的一些區別: 1.作用范圍:UserControl為頁面局部的緩存,Page為頁面全部的緩存 2.優先級:????? Page緩存優先級高于UserControl 例如: UserControl :?????????? <%@ OutputCache Duration="60"? VaryByParam="ProductType" %> Page? : <%@ OutputCache Duration="60"? VaryByParam=" none" %> 當ProductType =1改變時,Page緩存并不更新(UserControl并不更新) 如果Page去掉 OutputCache命令,則ProductType更新時,Page會更新(Control更新) 4.?????? 頁面生命OutPutCahe緩存策略優先于后臺代碼: 比如<%@ OutputCache? Duration="100" Location="Any" %>緩存100S 代碼:Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); 結果緩存100秒 其他實現: 1.根據不同的語言緩存不同的版本: Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));??????? Response.Cache.SetCacheability(HttpCacheability.Public);??????? Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByHeaders["Accept-Language"] = true; 2.文檔以來緩存: Response.AddFileDependency(Server.MapPath(Request.ApplicationPath + "/Web.Config")); Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); Response.Cache.SetCacheability(HttpCacheability.Public); 參考文檔: 1.?????? ASP.NET 緩存:方法和最佳實踐 http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx?mfr=true 2.?????? 數據緩存中頁面部分和用戶控件部分的說明
http://www.cnblogs.com/chenou/articles/603547.html 3.?????? ASP.NET緩存策略經驗談 http://www.cnblogs.com/imissherso/articles/635563.html 4.?????? ASP.NET 2.0的頁面緩存功能介紹
http://www.cnblogs.com/Joshualang/archive/2007/01/24/OutputCache.html 5.?????? 移除用戶控件的輸出緩存(OutputCache) http://www.cnblogs.com/Truly/archive/2006/10/12/527206.aspx 6.?????? P.NET 2.0 緩存技術 (原創) http://www.cnblogs.com/ghd258/archive/2005/11/03/248896.html 7.?????? 頁面輸出緩存 http://www.cnblogs.com/hide0511/archive/2006/10/21/535702.html
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/laolaolai/archive/2010/02/09/5301212.aspx
轉載于:https://www.cnblogs.com/wangjisi/archive/2010/05/20/1740235.html
總結
以上是生活随笔為你收集整理的OutputCache各参数的说明【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个小问题引发的论证思考
- 下一篇: 在.net中构建Google Map(