一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

ASP.NET 2.0中的頁(yè)面輸出緩存

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

   設(shè)置頁(yè)面輸出緩存可以使用以下兩種方式:一種是使用@ OutputCache指令,另一種是使用頁(yè)面輸出緩存API。@ OutputCache指令曾經(jīng)在ASP.NET 1.x中出現(xiàn)過(guò),并在ASP.NET 2.0中得到了繼承和增強(qiáng)。頁(yè)面輸出緩存API主要是指HttpCachePolicy類(lèi)。

使用@ OutputCache指令

   使用@ OutputCache指令,能夠?qū)崿F(xiàn)對(duì)頁(yè)面輸出緩存的一般性需要。@ OutputCache指令在ASP.NET頁(yè)或者頁(yè)中包含的用戶(hù)控件的頭部聲明。這種方式非常方便,只需幾個(gè)簡(jiǎn)單的屬性設(shè)置,就能夠?qū)崿F(xiàn)頁(yè)面的輸出緩存策略。@ 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個(gè)屬性,它們是CacheProfile、NoStore、Duration、Shared、Location、SqlDependency、VaryByControl、VaryByCustom、VaryByHeader和VaryByParam。這些屬性將對(duì)緩存時(shí)間、緩存項(xiàng)的位置、SQL數(shù)據(jù)緩存依賴(lài)等各方面進(jìn)行設(shè)置。下面簡(jiǎn)要介紹以上屬性的基本概念。

CacheProfile

   用于定義與該頁(yè)關(guān)聯(lián)的緩存設(shè)置的名稱(chēng)。是可選屬性,默認(rèn)值為空字符("")。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。在頁(yè)面中指定此屬性時(shí),屬性值必須與Web.config文件<o(jì)utputCacheSettings>配置節(jié)下的outputCacheProfiles元素中的一個(gè)可用項(xiàng)的名稱(chēng)匹配。如果此名稱(chēng)與配置文件項(xiàng)不匹配,將引發(fā)異常。

NoStore

   該屬性定義一個(gè)布爾值,用于決定是否阻止敏感信息的二級(jí)存儲(chǔ)。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。將此屬性設(shè)置為true等效于在請(qǐng)求期間執(zhí)行代碼“Response.Cache.SetNoStore();”。

Duration

   用于設(shè)置頁(yè)面或者用戶(hù)控件緩存的時(shí)間。單位是秒。通過(guò)設(shè)置該屬性,能夠?yàn)閬?lái)自對(duì)象的HTTP響應(yīng)建立了一個(gè)過(guò)期策略,并將自動(dòng)緩存頁(yè)或用戶(hù)控件輸出。需要注意的是,Duration屬性是必需的,否則將會(huì)引起分析器錯(cuò)誤。

Shared

   該屬性定義一個(gè)布爾值,用于確定用戶(hù)控件輸出是否可以由多個(gè)頁(yè)共享。默認(rèn)值為false。注意,包含在ASP.NET頁(yè)中的@ OutputCache指令不支持此屬性。

Location

   用于指定輸出緩存項(xiàng)的位置。其屬性值是OutputCacheLocation枚舉值,它們是Any、Client、Downstream、None、Server和ServerAndClient。默認(rèn)值是Any,表示輸出緩存可用于所有請(qǐng)求,包括客戶(hù)端瀏覽器、代理服務(wù)器或處理請(qǐng)求的服務(wù)器上。需要注意的是,包含在用戶(hù)控件中的@ OutputCache指令不支持此屬性。 

SqlDependency

   該屬性標(biāo)識(shí)一組數(shù)據(jù)庫(kù)/表名稱(chēng)對(duì)的字符串值,頁(yè)或控件的輸出緩存依賴(lài)于這些名稱(chēng)對(duì)。需要注意:SqlCacheDependency類(lèi)監(jiān)視輸出緩存所依賴(lài)的數(shù)據(jù)庫(kù)中的表,因此,當(dāng)更新表中的項(xiàng)時(shí),使用基于表的輪詢(xún)將從緩存中移除這些項(xiàng)。當(dāng)通知(在SQL Server 2005中)與CommandNotification值一起使用時(shí),最終將使用SqlDependency類(lèi)向SQL Server 2005服務(wù)器注冊(cè)查詢(xún)通知。另外,SqlDependency屬性的CommandNotification值僅在ASP.NET頁(yè)中有效。控件只能將基于表的輪詢(xún)用于@ OutputCache指令。

VaryByControl

   該屬性使用一個(gè)分號(hào)分隔的字符串列表來(lái)更改用戶(hù)控件的輸出緩存。這些字符串代表在用戶(hù)控件中聲明的ASP.NET服務(wù)器控件的ID屬性值。除非已經(jīng)包含了VaryByParam屬性,否則在@ OutputCache指令中,該屬性是必需的。

VaryByCustom

   用于自定義輸出緩存要求的任意文本。如果賦予該屬性值是browser,緩存將隨瀏覽器名稱(chēng)和主要版本信息的不同而異。如果輸入了自定義字符串,則必須在應(yīng)用程序的Global.asax文件中重寫(xiě)HttpApplication.GetVaryByCustomString方法。

VaryByHeader

   該屬性中包含由分號(hào)分隔的HTTP標(biāo)頭列表,用于使輸出緩存發(fā)生變化。當(dāng)將該屬性設(shè)為多標(biāo)頭時(shí),對(duì)于每個(gè)指定的標(biāo)頭,輸出緩存都包含一個(gè)請(qǐng)求文檔的不同版本。VaryByHeader屬性在所有HTTP 1.1緩存中啟用緩存項(xiàng),而不僅限于ASP.NET緩存。用戶(hù)控件中的@ OutputCache指令不支持此屬性。

VaryByParam

   該屬性定義了一個(gè)分號(hào)分隔的字符串列表,用于使輸出緩存發(fā)生變化。默認(rèn)情況下,這些字符串與用GET方法屬性發(fā)送的查詢(xún)字符串值對(duì)應(yīng),或與用POST方法發(fā)送的參數(shù)對(duì)應(yīng)。當(dāng)將該屬性設(shè)置為多參數(shù)時(shí),對(duì)于每個(gè)指定的參數(shù),輸出緩存都包含一個(gè)請(qǐng)求文檔的不同版本??赡艿闹蛋ā皀one”、“*”和任何有效的查詢(xún)字符串或POST參數(shù)名稱(chēng)。值得注意的是,在輸出緩存ASP.NET頁(yè)時(shí),該屬性是必需的。它對(duì)于用戶(hù)控件也是必需的,除非已經(jīng)在用戶(hù)控件的@ OutputCache指令中包含了VaryByControl屬性。如果沒(méi)有包含,則會(huì)發(fā)生分析器錯(cuò)誤。如果不需要使緩存內(nèi)容隨任何指定參數(shù)發(fā)生變化,則可將該值設(shè)為“none”。如果要使輸出緩存根據(jù)所有參數(shù)值發(fā)生變化,則將屬性設(shè)置為“*”。

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


使用@ OutputCache的示例代碼1

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

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

使用@ OutputCache的示例代碼2


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


   以上@ OutputCache指令設(shè)置頁(yè)面輸出緩存的有效期是100秒,并且根據(jù)查詢(xún)字符串參數(shù)location或者firstname來(lái)設(shè)置輸出緩存。例如,假設(shè)客戶(hù)端請(qǐng)求是“http://localhost/default.ASPx?location=beijing”,那么該頁(yè)面將被作為緩存處理。

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

   設(shè)置頁(yè)面輸出緩存可以使用以下兩種方式:一種是使用@ OutputCache指令,另一種是使用頁(yè)面輸出緩存API。@ OutputCache指令曾經(jīng)在ASP.NET 1.x中出現(xiàn)過(guò),并在ASP.NET 2.0中得到了繼承和增強(qiáng)。頁(yè)面輸出緩存API主要是指HttpCachePolicy類(lèi)。

AspNet技術(shù)ASP.NET 2.0中的頁(yè)面輸出緩存,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 黄色wwwcom | 亚洲综合激情六月婷婷在线观看 | 欧美a免费 | 小说区图片区视频区 | 亚洲一区二区三区深夜天堂 | www.91自拍| 一区二区三区四区国产精品 | 精品国产乱码久久久久久浪潮 | 久久久久久久久网站 | 国产亚洲91 | 污片免费在线观看 | 国产拳头交一区二区 | 好吊妞精品| 91视频中文 | 东京加勒比中文字幕波多野结衣 | 91精品国产高清久久久久 | 国内在线亚洲精品第一线 | 91豆奶视频| 天天天干| 久久厕所精品国产精品亚洲 | 久久国| www.欧美在线观看 | 九九视频网站 | 色综合成人网 | www.色综合.com| 午夜爽爽性刺激一区二区视频 | 丝袜亚洲综合 | 中文精品一卡2卡3卡4卡 | 精品综合久久久久久8888 | 久久久久久久久免费影院 | 成人亚洲国产 | 国产精品中文字幕在线 | 欧美人体一区二区三区 | 91精品国产综合成人 | 1区2区3区集团有限公司 | 久久国产美女 | 色呦呦在线看 | 国产人成午夜免视频网站 | 国产呦精品一区二区三区网站 | 大胆gogo999亚洲肉体艺术 | 日韩一区二区中文字幕 |