国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Asp.Net緩存(2)

2019-11-17 01:29:28
字體:
來源:轉載
供稿:網友

asp.net緩存(2)

緩存頁的多個版本

ASP.NET 允許在輸出緩存中緩存同一頁的多個版本。輸出緩存可能會因下列因素而異:

  • 初始請求 (HTTP GET) 中的查詢字符串。
  • 回發時傳遞的控制值(HTTP POST 值)。
  • 隨請求傳遞的 HTTP 標頭。
  • 發出請求的瀏覽器的主版本號。
  • 該頁中的自定義字符串。在這種情況下,可以在 Global.asax 文件中創建自定義代碼以指定該頁的緩存行為。

可以通過以下兩種方法來緩存頁輸出的多個版本:

使用@ OutputCache指令的屬性以聲明方式

使用HttpCachePolicy類的屬性和方法以編程方式。

@ OutputCache指令包括四個可用來緩存頁輸出的多個版本的屬性:

  • VaryByParam屬性可用來使緩存輸出因查詢字符串而異。
  • VaryByControl屬性可用來使緩存輸出因控制值而異。
  • VaryByHeader屬性可用來使緩存輸出因請求的 HTTP 標頭而異。
  • VaryByCustom屬性可用來使緩存輸出因瀏覽器類型或您定義的自定義字符串而異。

注意:您必須在任何@ OutputCache指令中包括VaryByParam屬性或VaryByControl屬性。但是,如果您不需要使緩存輸出因控制值或參數而異,則可以定義值為NoneVaryByParam

HttpCachePolicy類提供兩個屬性和一個方法,您可以通過它們以編程方式指定與以聲明方式所能設置的緩存配置相同的緩存配置。使用VaryByParams和VaryByHeaders屬性可以分別指定查詢字符串參數和標頭名稱作為緩存策略改變依據。使用SetVaryByCustom方法可以定義要作為輸出緩存改變依據的自定義字符串。

如何:使用請求瀏覽器緩存頁的各個版本

如果您的 Web 應用程序包含一個基于請求瀏覽器的類型創建不同輸出的頁,則可以按請求該頁的瀏覽器的主版本來緩存頁輸出的版本。

注意:主版本和瀏覽器類型信息是通過HttpBrowserCapabilities對象的MajorVersion屬性在當前請求中傳遞的。

基于瀏覽器類型以聲明方式緩存頁的多個版本:

  1. 在 ASP.NET 頁中,包括一個具有必需的Duration以及VaryByParam或VaryByControl屬性的@ OutputCache指令。必須將Duration屬性設置為大于零的整數。如果希望僅按瀏覽器類型進行緩存,請將VaryByParam屬性設置為“None”。
  2. 在@ OutputCache指令中,包括VaryByCustom屬性并將其設置為“browser”。

下面的示例將導致持續緩存該頁達 10 秒。輸出將因瀏覽器類型而異。

<%@ OutputCache Duration="10" VaryByParam="None"VaryByCustom="browser" %>

基于瀏覽器類型以編程方式緩存頁的多個版本:

  1. 在頁代碼中,對頁的Response屬性的Cache屬性調用SetExpires和SetCacheability方法。
  2. 調用SetVaryByCustom方法,在custom參數中傳遞值“browser”。

下面的代碼示例演示如何持續緩存頁的多個版本達 1 分鐘。輸出將因發出請求的瀏覽器的類型而異。

PRotected void Page_Load(object sender, EventArgs e){    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));    Response.Cache.SetCacheability(HttpCacheability.Public);    Response.Cache.SetValidUntilExpires(true);    Response.Cache.SetVaryByCustom("browser");}
View Code

如何:使用參數對頁的各個版本進行緩存

有時候您希望緩存某頁,但是該頁可能基于查詢字符串參數的值或回發中與頁一起發送的值生成不同的輸出

可以根據作為查詢字符串值或窗體發送值發送的參數緩存頁響應的多個版本。

注意

在用于緩存目的時,ASP.NET 將帶相同鍵/值對的查詢字符串值或窗體發送值視為相同,無論參數傳遞的順序如何。然而,對于緩存目的,參數名是區分大小寫的,ASP.NET 將為大寫和小寫的參數名和參數值緩存不同版本的頁。

使用參數以聲明方式緩存頁輸出的多個版本

  1. 在 ASP.NET 頁中包括@ OutputCache指令,該指令帶有Duration屬性。Duration屬性是必需的,并且必須將其設置為大于零的整數。
  2. 在@ OutputCache指令中,包括VaryByParam屬性,并將其值設置為想要使頁隨之變化的查詢字符串或窗體發送參數的名稱。

下面的代碼示例將頁緩存 60 秒,并指定將要根據City查詢字符串值或窗體發送參數緩存頁輸出的不同版本。

<%@ OutputCache Duration="60" VaryByParam="City" %>

  • 注意

    如果要根據多個參數改變輸出緩存,請包括以分號 (;) 作為分隔符的參數名稱的列表。如果要根據所有的參數值來改變緩存,請將VaryByParam屬性設置為星號 (*)。下面的代碼示例演示如何通過City和Z

    注意

    如果要根據多個參數改變緩存的內容,請多次設置VaryByParams屬性。如果要根據所有標頭值改變緩存的內容,請將VaryByHeader屬性設置為星號 (*)。下面的代碼示例演示如何通過City和Zip參數改變頁輸出。

    如何:使用 HTTP 標頭對某頁的各個版本進行緩存

    使用 ASP.NET,您可以根據指定的 HTTP 標頭的值對某頁的多個版本進行緩存。當請求頁時,您可以指定按傳遞到應用程序的單個標頭、多個標頭或所有標頭進行緩存。

    根據 HTTP 標頭值以聲明方式對某頁的各個版本進行緩存

    1. 在 ASP.NET 頁中,在@ OutputCache指令中包括必需的Duration和VaryByParam或VaryByControl屬性。必須將Duration屬性設置為大于零的整數。如果希望只按 HTTP 標頭值進行緩存,則必須將VaryByParam屬性設置為“None”。
    2. 在@ OutputCache指令中,包含VaryByHeader屬性,將其值設置為要作為改變緩存內容的依據的 HTTP 標頭的名稱。

    下面的示例將頁緩存 60 秒,并根據隨Accept-LanguageHTTP 標頭傳遞的值設置要緩存的頁的版本:

    <%@ OutputCache Duration="60" VaryByParam="None" aryByHeader="Accept-Language" %>

    注意:如果要根據多個標頭改變緩存的內容,請以分號 (;) 作為分隔符包括標頭名稱的列表。如果要根據所有標頭值改變緩存的內容,請將VaryByHeader屬性設置為星號 (*)。

    根據 HTTP 標頭值以編程方式對某頁的各個版本進行緩存

    1. 在頁的Page_Load方法中,對頁的Response對象的Cache屬性調用SetCacheability和SetExpires方法。
    2. 將VaryByHeaders屬性中的 HTTP 標頭值設置為true

    下面的代碼示例演示如何為有不同的Accept-LanguageHTTP 標頭值的請求,將某頁的多個版本緩存一分鐘之久。

    protected void Page_Load(object sender, EventArgs e){    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));    Response.Cache.SetCacheability(HttpCacheability.Public);    Response.Cache.SetValidUntilExpires(true);    Response.Cache.VaryByHeaders["Accept-Language"] = true;}
    View Code

    注意:如果要根據多個標頭改變緩存的內容,需要在VaryByHeaders屬性中設置多個值。如果要根據所有標頭改變緩存的內容,請將VaryByHeaders["VaryByUnspecifiedParameters"] 設置為true

    如何:使用自定義字符串對頁的各個版本進行緩存

    除了按瀏覽器類型和參數進行不同的輸出緩存行為外,還可以根據您定義的方法所返回的不同字符串對頁輸出的多個版本進行緩存。

    根據自定義字符串對頁進行緩存時,應首先指定要使用的自定義字符串的標識符。然后在應用程序的 Global.asax 文件中創建一個方法,該方法接受此標識符,并且返回一個值,作為進行不同的輸出緩存行為的依據。

    根據自定義字符串對頁輸出的多個版本進行緩存

    1. 在 ASP.NET 頁中包括@ OutputCache指令,該指令帶有必需的Duration和VaryByParam屬性。必須將Duration屬性設置為大于零的整數。如果不想使用VaryByParam屬性提供的功能,則必須將其值設置為“無”。
    2. 若要以聲明方式設置自定義字符串,請在@ OutputCache指令中包括VaryByCustom屬性,并將該屬性設置為您要作為進行不同輸出緩存行為的依據的字符串。

    下面的指令根據自定義字符串“minorversion”改變頁輸出。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>

    1. 若要以編程方式設置自定義字符串,請調用SetVaryByCustom方法,并將要使用的自定義字符串傳遞給它。

    下面的代碼示例演示如何將自定義字符串設置為“minorversion”。

    C#

    Response.Cache.SetVaryByCustom("minorversion");

    注意

    如果試圖以編程方式和聲明方式設置自定義字符串,則會收到InvalidOperationException。您需要選擇其中一種方法。

    1. 在應用程序的 Global.asax 文件中,重寫GetVaryByCustomString方法以指定自定義字符串的輸出緩存行為。

    被重寫的方法接受您在VaryByCustom屬性或SetVaryByCustom方法中設置的字符串,作為它的arg參數。例如,有些頁可能根據請求瀏覽器的次版本進行緩存。對于這些頁,可以將VaryByCustom屬性設置為“minorversion”。然后,在被重寫的GetVaryByCustomString方法中,可以檢查arg參數,并根據arg參數的值是否為“minorversion”返回不同的字符串。

    下面的代碼示例演示一個 Global.asax 文件,其中的GetVaryByCustomString方法

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 迁安市| 茌平县| 嘉祥县| 新巴尔虎左旗| 定州市| 武鸣县| 工布江达县| 从化市| 大新县| 溧阳市| 兴山县| 蓬安县| 瑞丽市| 清涧县| 阿尔山市| 阳谷县| 呈贡县| 定襄县| 鄢陵县| 天峨县| 集贤县| 富源县| 临湘市| 宜兰县| 缙云县| 凤山市| 邛崃市| 天峨县| 宁津县| 唐海县| 金寨县| 锡林浩特市| 遂溪县| 桑日县| 化隆| 金山区| 台北市| 都江堰市| 吴川市| 韶山市| 淄博市|
      <rt id="4ewp0"><optgroup id="4ewp0"><bdo id="4ewp0"></bdo></optgroup></rt>
      1. <rt id="4ewp0"><div id="4ewp0"><form id="4ewp0"></form></div></rt>