天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ASP.NET 2.0中的頁面輸出緩存

靜態頁面全部內容保存在服務器內存中。當再有請求時,系統將緩存中的相關數據直接輸出,直到緩存數據過期。這個過程中,緩存不需要再次經過頁面處理生命周期。這樣可以縮短請求響應時間,提高應用程序性能。很顯然,頁面輸出緩存適用于不需要頻繁更新數據,而占用大量時間和資源才能編譯生成的頁面。對于那些數據經常更新的頁面,則不適用。默認情況下,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 CacheProfile =" " NoStore= "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”,那么該頁面將被作為緩存處理。

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

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

AspNet技術ASP.NET 2.0中的頁面輸出緩存,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜伦伦电影理论片费看 | 国产真实强被迫伦姧女在线观看 | 芳草地在线观看免费视频 | 狂野欧美性猛XXXX乱大交 | 日本三级床震 | 伊人久久亚洲综合天堂 | 欧美另类老少配hd | 久久电影精品久久99久久 | 第一怡春院 | 色聚网久久综合 | 娇妻归来在线观看免费完整版电影 | 国产WW久久久久久久久久 | 给个男人都懂的网址2019 | 肉肉高潮液体高干文H | 天堂无码人妻精品AV一区 | 国产专区亚洲欧美另类在线 | 男女疯狂一边摸一边做羞羞视频 | 97超碰97资源在线观看视频 | 一本色道久久88综合日韩精品 | 国产成人高清精品免费5388密 | 亚洲欧美免费无码专区 | 国产偷国产偷亚州清高APP | 日韩免费一区二区三区在线 | 丰满五十六十老熟女HD60 | 美女网站免费久久久久久久 | 久久精品亚洲国产AV涩情 | 纯肉合集(高H) | 久久视频精品38在线播放 | 欧美牲交视频免费观看K8经典 | 亚洲精品久久AV无码蜜桃 | 国产国语在线播放视频 | 国产跪地吃黄金喝圣水合集 | 无颜之月全集免费观看 | 试看做受120秒免费午夜剧场 | 久久精品综合电影 | 精品久久久久亚洲 | 日本久久道一区二区三区 | 97久久精品人人槡人妻人 | 亚洲 日本 天堂 国产 在线 | 麻豆免费版 | 久久亚洲AV成人无码国产漫画 |