亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET頁面緩存

2019-11-14 14:23:14
字體:
來源:轉載
供稿:網友

靜態頁面全部內容保存在服務器內存中。當再有請求時,系統將緩存中的相關數據直接輸出,直到緩存數據過期。這個過程中,緩存不需要再次經過頁面處理生命周期。這樣可以縮短請求響應時間,提高應用程序性能。很顯然,頁面輸出緩存適用于不需要頻繁更新數據,而占用大量時間和資源才能編譯生成的頁面。對于那些數據經常更新的頁面,則不適用。默認情況下,asp.net 2.0啟用了頁面輸出緩存功能,但并不緩存任何響應的輸出。開發人員必須通過設置,使得某些頁面的響應成為緩存的一部分。

  設置頁面輸出緩存可以使用以下兩種方式:一種是使用@ OutputCache指令,另一種是使用頁面輸出緩存API。@ OutputCache指令曾經在ASP.NET 1.x中出現過,并在ASP.NET 2.0中得到了繼承和增強。頁面輸出緩存API主要是指HttpCachePolicy類。

  使用@ OutputCache指令

  使用@ OutputCache指令,能夠實現對頁面輸出緩存的一般性需要。@ OutputCache指令在ASP.NET頁或者頁中包含的用戶控件的頭部聲明。這種方式非常方便,只需幾個簡單的屬性設置,就能夠實現頁面的輸出緩存策略。@ OutputCache指令聲明代碼如下。


@ OutputCache指令代碼


<%@ OutputCache CacheNoStore="True | False" Duration="#ofseconds"Shared="True | False" Location="Any | Client | Downstream | Server | None | ServerandClient " SqlDependency="database/table name pair | CommandNotification "VaryByControl="controlname" VaryByCustom="browser | customstring"VaryByHeader="headers" VaryByParam="parametername" %>


  如上所示,在@ OutputCache指令中,共包括10個屬性,它們是CacheProfile、NoStore、Duration、Shared、Location、SqlDependency、VaryByControl、VaryByCustom、VaryByHeader和VaryByParam。這些屬性將對緩存時間、緩存項的位置、SQL數據緩存依賴等各方面進行設置。下面簡要介紹以上屬性的基本概念。

   CacheProfile

  用于定義與該頁關聯的緩存設置的名稱。是可選屬性,默認值為空字符("")。需要注意的是,包含在用戶控件中的@ OutputCache指令不支持此屬性。在頁面中指定此屬性時,屬性值必須與Web.config文件<outputCacheSettings>配置節下的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”。如果要使輸出緩存根據所有參數值發生變化,則將屬性設置為“*”。

  下面列舉了兩個使用@OutputCache指令的示例代碼。


使用@ OutputCache的示例代碼1


<%@ OutputCache Duration="100" VaryByParam="none"%>


  以上示例是@ OutputCache指令的基本應用,其指示頁面輸出緩存的有效期是100秒,并且頁面不隨任何GET或POST參數改變。在該頁仍被緩存時接收到的請求由緩存數據提供服務。經過100秒后,將從緩存中移除該頁數據,并隨后顯式處理下一個請求并再次緩存頁。


使用@ OutputCache的示例代碼2


<%@ OutputCache Duration="100" VaryByParam="location;firstname" %>


  以上@ OutputCache指令設置頁面輸出緩存的有效期是100秒,并且根據查詢字符串參數location或者firstname來設置輸出緩存。例如,假設客戶端請求是“http://localhost/default.aspx?location=beijing”,那么該頁面將被作為緩存處理。

  使用頁面輸出緩存API

  上文介紹了使用@ OutputCache指令實現對于輸出緩存的各項設置。這種方法簡單易行,深得開發人員青睞。另外,ASP.NET 2.0還從ASP.NET 1.x中繼承和擴展了一種使用輸出緩存API來編程設置頁面輸出緩存的方法。該方法的核心是調用System.Web.HttpCachePolicy。該類主要包含用于設置緩存特定的HTTP標頭的方法和用于控制ASP.NET頁面輸出緩存的方法。與.NET Framework 1.x中的HttpCachePolicy類相比,.NET Framework 2.0中的HttpCachePolicy類得到了擴充和發展。主要是增加了一些重要方法,例如,SetOmitVarStar方法等。由于HttpCachePolicy類方法眾多,下面簡要說明一些常用方法。

   SetExpires方法

  用于設置緩存過期的絕對時間。它的參數是一個DataTime類的實例,表示過期的絕對時間。

   SetLastModified方法

  用于設置頁面的Last-Modified HTTP標頭。Last-Modified HTTP標頭表示頁面上次修改時間,緩存將依靠它來進行計時。如果違反了緩存限制層次結構,此方法將失敗。該方法的參數是一個DataTime類的實例。

   SetSlidingExpiration方法

  該方法將緩存過期從絕對時間設置為可調時間。其參數是一個布爾值。當參數為true時,Cache-Control HTTP標頭將隨每個響應而更新。此過期模式與相對于當前時間將過期標頭添加到所有輸出集的IIS配置選項相同。當參數為false時,將保留該設置,且任何啟用可調整過期的嘗試都將靜態失敗。此方法不直接映射到HTTP標頭。它由后續模塊或輔助請求來設置源服務器緩存策略。

   SetOmitVaryStar方法

  ASP.NET 2.0新增的方法。用于指定在按參數進行區分時,響應是否應該包含vary:*標頭。方法參數是一個布爾值,若要指示HttpCachePolicy不對其VaryByHeaders屬性使用*值,則為true;否則為false。

   SetCacheability方法

  用于設置頁面的Cache-Control HTTP標頭。該標頭用于控制在網絡上緩存文檔的方式。該方法有兩種重載方式,所不同的是參數。一種重載方法的參數是HttpCacheability枚舉值,包括NoCache、Private、Public、Server、ServerAndNoCache和ServerAndPrivate(有關這些枚舉值的定義,可參考MSDN)。另一種方法的參數有兩個,一個參數是HttpCacheability枚舉值,另一個參數是字符串,表示添加到標頭的緩存控制擴展。需要注意的是,僅當與Private或NoCache指令一起使用時,字段擴展名才有效。如果組合不兼容的指令和擴展,則此方法將引發無效參數異常。

  下面舉例說明頁面緩存API的HttpCachePolicy類的使用方法。


HttpCachePolicy類示例源代碼

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetExpires(DateTime.Parse("6:00:00PM"));


  Response類的Cache屬性用于獲取頁面緩存策略。該屬性的數據類型是HttpCachePolicy??赏ㄟ^調用Response.Cache來獲取HttpCachePolicy實例,進而實現對于當前頁面輸出緩存的設置。如上代碼所示,第一行代碼表示輸出緩存時間是60秒,并且頁面不隨任何GET或POST參數改變,等同于“<%@ OutputCache Duration="60" VaryByParam="none" %>”。第二行代碼設置緩存過期的絕對時間是當日下午6時整。

  頁面輸出緩存應用

  以上兩小節分別介紹了使用@ OutputCache指令和API設置頁面輸出緩存功能的內容。實際上,兩種方法各有優點,使用@ OutputCache指令方法比較簡潔,但靈活性較差。使用API方法,能夠在運行時動態地修改緩存配置,處理更多的復雜需求。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美孕妇毛茸茸xxxx| 亚洲自拍中文字幕| 国产日韩换脸av一区在线观看| 色偷偷av一区二区三区乱| 欧美日韩中文字幕日韩欧美| 亚洲最大在线视频| 欧美最猛性xxxxx(亚洲精品)| 亚洲午夜未删减在线观看| 欧美极品欧美精品欧美视频| 精品久久中文字幕久久av| 欧美人与性动交a欧美精品| 青草成人免费视频| 九九热最新视频//这里只有精品| 成人字幕网zmw| 国内精品美女av在线播放| 青青精品视频播放| 日韩激情视频在线播放| 精品视频在线播放色网色视频| 中文字幕亚洲专区| 日韩精品免费在线观看| 中日韩美女免费视频网站在线观看| 欧美精品在线看| 日韩av影院在线观看| 国产一区二区视频在线观看| 777国产偷窥盗摄精品视频| 欧美肥老妇视频| 国产亚洲精品美女久久久久| 久久6精品影院| 美女视频久久黄| 成人激情av在线| 久久久久久久久久国产精品| 久久精品国产91精品亚洲| 亚洲女人天堂av| 国产精品久久久久久久久久尿| 亚洲精品动漫久久久久| 日本久久久久久久久| 1769国内精品视频在线播放| 欧美日韩亚洲一区二区三区| 久久久久久18| 蜜臀久久99精品久久久久久宅男| 亚洲一区二区三区四区视频| 欧美日韩aaaa| 97精品免费视频| 中文字幕日本精品| 一个色综合导航| 欧美专区中文字幕| 精品一区电影国产| 亚洲精品中文字| 亚洲精品视频播放| 91av在线播放视频| 伊人久久综合97精品| 久久色在线播放| 久久精品国产亚洲7777| 日韩视频在线免费观看| 97人洗澡人人免费公开视频碰碰碰| 欧美日韩免费在线| 亚洲免费视频网站| 欧美日韩亚洲精品一区二区三区| 国产精品99久久久久久久久久久久| 欧美一级黑人aaaaaaa做受| 日韩欧美福利视频| 久久精品久久久久电影| 91精品视频一区| 欧美一区二区三区……| 欧美精品在线网站| 欧美日韩精品国产| 91精品国产91久久久久久| 欧美裸体xxxx极品少妇| 亚洲欧美成人网| 国产成人精品综合久久久| 久久久久久久久久久亚洲| 国产精品白丝av嫩草影院| 久久久免费高清电视剧观看| 久久国产精彩视频| 国产69久久精品成人| 欧美成人精品xxx| 欧美在线影院在线视频| 久久999免费视频| 永久免费精品影视网站| 国产成人精品av在线| 国产成人一区三区| 亚洲少妇激情视频| 中文字幕亚洲无线码在线一区| 亚洲精品中文字幕av| 久久久精品欧美| 欧美成人免费全部观看天天性色| 亚洲精品国精品久久99热一| 色一区av在线| 亚洲人在线视频| 久久亚洲精品小早川怜子66| 亚洲美女福利视频网站| 亚洲精品在线观看www| 国产精品老女人视频| 亚洲一区美女视频在线观看免费| 国产精品va在线播放| 亚洲最大成人免费视频| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲国产欧美一区| 日韩免费中文字幕| 国语自产精品视频在线看抢先版图片| 亚洲精品国产精品国产自| 午夜精品一区二区三区在线视| 国产欧美中文字幕| 亚洲精品免费一区二区三区| 这里只有精品丝袜| 91精品视频在线| 国产日韩欧美电影在线观看| 日本欧美精品在线| 在线电影av不卡网址| 亚洲美女喷白浆| 国产精品中文久久久久久久| 久久久精品久久| 久久久精品欧美| 国产丝袜一区二区三区免费视频| 亚洲男人天堂久| 中文字幕精品www乱入免费视频| 日韩综合中文字幕| 精品日韩美女的视频高清| 国产精品色视频| 亚洲一区二区三区四区在线播放| 欧美性在线视频| 在线看片第一页欧美| 九九热精品视频| 日本19禁啪啪免费观看www| 91美女福利视频高清| 激情成人中文字幕| 久久久91精品国产| 国产91精品久久久久| 亚洲午夜国产成人av电影男同| 精品无人区太爽高潮在线播放| 日韩成人黄色av| 国产亚洲精品成人av久久ww| 国产在线观看91精品一区| 成人精品一区二区三区电影免费| 欧美劲爆第一页| 精品中文字幕在线2019| 精品亚洲一区二区三区在线观看| 黑人精品xxx一区一二区| 丝袜一区二区三区| 亚洲国产一区二区三区在线观看| 久久国产一区二区三区| 亚洲欧美制服丝袜| 国产在线视频不卡| 亚洲黄一区二区| 69av在线播放| 亚洲成人精品久久久| 亚洲日本欧美中文幕| 在线播放国产一区中文字幕剧情欧美| 91沈先生在线观看| 亚洲色图综合久久| 亚洲欧美中文字幕在线一区| 成人性生交大片免费看小说| 国产精品永久免费在线| 日韩有码在线电影| 成人免费淫片视频软件| 大荫蒂欧美视频另类xxxx| 国产精品久久久久久av福利软件| 中文字幕日韩欧美| 国产精品91免费在线| 国产一区欧美二区三区| 日韩一区二区三区xxxx| 久久精品夜夜夜夜夜久久| 不卡av在线播放| 91av视频导航|