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