|
|
|
|
|
ASP.NET 中使用@OutputCache
,是以聲明的方式控制 ASP.NET 頁或頁中包含的用戶控件的輸出緩存策略。本文介紹它的12個(gè)屬性及使用注意問題。
語法
<%@ 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"
%>
特性
頁或用戶控件進(jìn)行緩存的時(shí)間(以秒計(jì))。 在頁或用戶控件上設(shè)置該特性為來自對(duì)象的 HTTP 響應(yīng)建立了一個(gè)過期策略,并將自動(dòng)緩存頁或用戶控件輸出。
注意!此特性必選。如果未包含該屬性,將出現(xiàn)分析器錯(cuò)誤。
OutputCacheLocation
枚舉值之一。 默認(rèn)值為 Any。
注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache
指令不支持此特性。
與該頁關(guān)聯(lián)的緩存設(shè)置的名稱。 這是可選特性,默認(rèn)值為空字符串 ("")。
注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache
指令不支持此特性。在頁中指定此屬性時(shí),屬性值必須與 outputCacheSettings
節(jié)下面的 outputCacheProfiles
元素中的一個(gè)可用項(xiàng)的名稱匹配。如果此名稱與配置文件項(xiàng)不匹配,將引發(fā)異常。
參考:
一個(gè)布爾值,它決定了是否阻止敏感信息的二級(jí)存儲(chǔ)。
注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache
指令不支持此特性。將此特性設(shè)置為 true 等效于在請求期間執(zhí)行以下代碼: Response.Cache.SetNoStore();
一個(gè)字符串值,標(biāo)識(shí)要使用的自定義輸出緩存提供程序。
注意!此屬性僅在用戶控件(.ascx 文件)中受到支持。它不受包含在 ASP.NET 頁(.aspx 文件)中的 @ OutputCache
指令的支持。
一個(gè)布爾值,確定用戶控件輸出是否可以由多個(gè)頁共享。 默認(rèn)值為 false。
注意!包含在 ASP.NET 頁(.aspx 文件)中的 @ OutputCache
指令不支持此特性。
標(biāo)識(shí)一組數(shù)據(jù)庫/表名稱對(duì)的字符串值,頁或控件的輸出緩存依賴于這些名稱對(duì)。 請注意,SqlCacheDependency
類監(jiān)視輸出緩存所依賴的數(shù)據(jù)庫中的表,因此當(dāng)更新表中的項(xiàng)時(shí),使用基于表的輪詢時(shí)將從緩存中移除這些項(xiàng)。 如果以值 CommandNotification
使用通知(在 Microsoft SQL Server 2005 中),則最終會(huì)使用 SqlDependency
類向 SQL Server 2005 服務(wù)器注冊查詢通知。
參考:
注意!SqlDependency
特性的 CommandNotification
值僅在網(wǎng)頁 (.aspx) 中有效。用戶控件只能將基于表的輪詢用于 @ OutputCache
指令。
表示自定義輸出緩存要求的任意文本。 如果特性的賦值為 browser,緩存將隨瀏覽器名稱和主要版本信息的不同而異。 如果輸入自定義字符串,則必須在應(yīng)用程序的 Global.asax 文件中重寫 GetVaryByCustomString
方法。
分號(hào)分隔的 HTTP 標(biāo)頭列表,用于使輸出緩存發(fā)生變化。 將該特性設(shè)為多標(biāo)頭時(shí),對(duì)于每個(gè)指定標(biāo)頭組合,輸出緩存都包含一個(gè)不同版本的請求文檔。
注意!設(shè)置 VaryByHeader
特性將啟用在所有 HTTP 1.1 版緩存中緩存項(xiàng),而不僅僅在 ASP.NET 緩存中進(jìn)行緩存。用戶控件中的 @ OutputCache
指令不支持此特性。
分號(hào)分隔的字符串列表,用于使輸出緩存發(fā)生變化。 默認(rèn)情況下,這些字符串對(duì)應(yīng)于使用 GET 方法特性發(fā)送的查詢字符串值,或者使用 POST 方法發(fā)送的參數(shù)。 將該特性設(shè)置為多個(gè)參數(shù)時(shí),對(duì)于每個(gè)指定參數(shù)組合,輸出緩存都包含一個(gè)不同版本的請求文檔。 可能的值包括 none、星號(hào) (*) 以及任何有效的查詢字符串或 POST 參數(shù)名稱。
注意!在 ASP.NET 頁和用戶控件上使用 @ OutputCache
指令時(shí),需要此特性或 VaryByControl
特性。如果沒有包含它,則發(fā)生分析器錯(cuò)誤。如果不希望通過指定參數(shù)來改變緩存內(nèi)容,請將值設(shè)置為 none。如果希望通過所有的參數(shù)值改變輸出緩存,請將特性設(shè)置為星號(hào) (*))。
一個(gè)分號(hào)分隔的字符串列表,用于更改用戶控件的輸出緩存。 這些字符串代表用戶控件中聲明的 ASP.NET 服務(wù)器控件的 ID 屬性值。
注意!在 ASP.NET 頁和用戶控件上使用 @ OutputCache
指令時(shí),需要此特性或 VaryByParam
特性。
以分號(hào)分隔的字符串列表,用于更改輸出緩存。 將 VaryByContentEncodings
特性用于 Accept-Encoding
標(biāo)頭,可確定不同內(nèi)容編碼獲得緩存響應(yīng)的方式。有關(guān)如何指定 Accept-Encoding
標(biāo)頭的更多信息,請參見文章標(biāo)頭“Vary:Accept-Encoding”指定方法及其重要性分析。
總結(jié)
本文介紹了asp.net @OutputCache
的12個(gè)屬性及使用注意問題。
相關(guān)文章