技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

asp.net @OutputCache 12個(gè)屬性使用介紹

作者:admin    時(shí)間:2023-6-13 21:34:11    瀏覽:

asp.net 的 @OutputCache ,是以聲明方式控制 ASP.NET 頁面或頁面中包含的用戶控件的輸出緩存策略。

@OutputCache 包含有12個(gè)屬性,本文將詳細(xì)介紹它們的含義及用法。

句法

<%@ OutputCache Duration="#ofseconds"
   Location="Any | Client | Downstream | Server | None | 
     ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername" 
   VaryByContentEncoding="encodings"
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"
   ProviderName="Provider Name"  
%>

Duration

緩存頁面或用戶控件的時(shí)間(以秒為單位)。在頁面或用戶控件上設(shè)置此屬性可為對(duì)象的 HTTP 響應(yīng)建立過期策略,并將自動(dòng)緩存頁面或用戶控件輸出。

筆記

此屬性是必需的。如果不包含它,則會(huì)發(fā)生解析器錯(cuò)誤。

Location

枚舉值之一。默認(rèn)值為 Any。

筆記

用戶控件(.ascx 文件)中包含的 @OutputCache 指令不支持此屬性。

CacheProfile

與頁面關(guān)聯(lián)的緩存設(shè)置的名稱。這是一個(gè)可選屬性,默認(rèn)為空字符串 ("")。

筆記

用戶控件(.ascx 文件)中包含的 @OutputCache 指令不支持此屬性。在頁面上指定時(shí),該值必須與 outputCacheSettings 部分下的 outputCacheProfiles 元素中可用條目之一的名稱相匹配。如果名稱與配置文件條目不匹配,則會(huì)拋出異常。

NoStore

一個(gè)布爾值,決定是否防止二次存儲(chǔ)敏感信息。

筆記

用戶控件(.ascx 文件)中包含的 @OutputCache 指令不支持此屬性。將此屬性設(shè)置為 true 等效于在請(qǐng)求期間執(zhí)行以下代碼:
Response.Cache.SetNoStore();

ProviderName

一個(gè)字符串值,用于標(biāo)識(shí)要使用的自定義輸出緩存提供程序。

筆記

此屬性僅在用戶控件(.ascx 文件)中受支持。它不支持 ASP.NET 頁面(.aspx 文件)中包含的 @OutputCache 指令。

Shared

一個(gè)布爾值,它確定用戶控件輸出是否可以與多個(gè)頁面共享。默認(rèn)為false。

筆記

ASP.NET 頁面(.aspx 文件)中包含的 @OutputCache 指令不支持此屬性。

SqlDependency

一個(gè)字符串值,它標(biāo)識(shí)頁面或控件的輸出緩存所依賴的一組數(shù)據(jù)庫和表名稱對(duì)。請(qǐng)注意,SqlCacheDependency類監(jiān)視輸出緩存所依賴的數(shù)據(jù)庫中的表,因此當(dāng)表中的項(xiàng)目更新時(shí),這些項(xiàng)目會(huì)在使用基于表的輪詢時(shí)從緩存中刪除。當(dāng)使用值為 CommandNotification 的通知(在 Microsoft SQL Server 2005 中)時(shí),最終會(huì)使用一個(gè)SqlDependency類來向 SQL Server 2005 服務(wù)器注冊(cè)查詢通知。

筆記

SqlDependency 屬性的 CommandNotification 值僅在 Web (.aspx) 頁面上有效。用戶控件只能通過 @OutputCache 指令使用基于表的輪詢。

VaryByCustom

表示自定義輸出緩存要求的任何文本。如果此屬性的值為瀏覽器,則緩存會(huì)因?yàn)g覽器名稱和主要版本信息而異。如果輸入自定義字符串,則必須覆蓋應(yīng)用程序的 Global.asax 文件中的GetVaryByCustomString方法。

VaryByHeader

用于改變輸出緩存的以分號(hào)分隔的 HTTP 標(biāo)頭列表。當(dāng)此屬性設(shè)置為多個(gè)標(biāo)頭時(shí),輸出緩存包含指定標(biāo)頭的每個(gè)組合的不同版本的請(qǐng)求文檔。

筆記

設(shè)置 VaryByHeader 屬性可以在所有 HTTP 1.1 版緩存中啟用緩存項(xiàng)目,而不僅僅是 ASP.NET 緩存。用戶控件中的 @OutputCache 指令不支持此屬性。

VaryByParam

用于改變輸出緩存的以分號(hào)分隔的字符串列表。默認(rèn)情況下,這些字符串對(duì)應(yīng)于使用 GET 方法屬性發(fā)送的查詢字符串值,或使用 POST 方法發(fā)送的參數(shù)。當(dāng)此屬性設(shè)置為多個(gè)參數(shù)時(shí),輸出緩存包含指定參數(shù)的每個(gè)組合的不同版本的請(qǐng)求文檔。可能的值包括無、星號(hào) (*) 和任何有效的查詢字符串或 POST 參數(shù)名稱。

在 ASP.NET 頁面和用戶控件上使用 @OutputCache 指令時(shí),需要此屬性或 VaryByControl 屬性。如果你未能包含它,則會(huì)發(fā)生解析器錯(cuò)誤。如果你不想指定參數(shù)來改變緩存的內(nèi)容,請(qǐng)將值設(shè)置為 none。如果要通過所有參數(shù)值改變輸出緩存,請(qǐng)將屬性設(shè)置為星號(hào) (*)。

VaryByControl

一個(gè)以分號(hào)分隔的字符串列表,用于改變用戶控件的輸出緩存。這些字符串表示在用戶控件中聲明的 ASP.NET 服務(wù)器控件的 ID 屬性值。

筆記

在 ASP.NET 頁面和用戶控件上使用 @OutputCache 指令時(shí),需要此屬性或 VaryByParam 屬性。

VaryByContentEncodings

用于改變輸出緩存的以分號(hào)分隔的字符串列表。VaryByContentEncodings 屬性與 Accept-Encoding 標(biāo)頭一起使用,以確定如何為不同的內(nèi)容編碼提供緩存的響應(yīng)。

評(píng)論

設(shè)置頁面OutputCache的值與通過Cache屬性操作SetExpiresSetCacheability方法相同。

如果 Web 窗體頁面需要用戶授權(quán)才能查看,則OutputCache會(huì)將 Cache-Control HTTP 標(biāo)頭設(shè)置為私有。

如果將 Shared 屬性設(shè)置為 true,則多個(gè) Web 窗體頁面可以訪問緩存的用戶控件輸出。如果不將其設(shè)置為 true,則默認(rèn)行為是為包含該用戶控件的每個(gè)頁面緩存一個(gè)版本的用戶控件輸出。通過啟用 Shared 屬性,你可以潛在地節(jié)省大量?jī)?nèi)存。

例子

以下代碼示例演示如何設(shè)置頁面或用戶控件OutputCache的持續(xù)時(shí)間。

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

下一個(gè)代碼示例演示如何指示輸出緩存根據(jù)來自表單的 POST 方法或查詢字符串的位置和計(jì)數(shù)表單參數(shù)來緩存頁面或用戶控件。每個(gè)帶有不同位置或計(jì)數(shù)參數(shù)(或兩者)的 HTTP 請(qǐng)求都會(huì)緩存十秒。任何具有相同參數(shù)值的后續(xù)請(qǐng)求都將從緩存中得到滿足,直到條目過期為止。

<%@ OutputCache Duration="10" VaryByParam="location;count" %>

相關(guān)文章

標(biāo)簽: asp.net  OutputCache  
x
  • 站長推薦
/* 左側(cè)顯示文章內(nèi)容目錄 */