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

贊助商

分類目錄

贊助商

最新文章

搜索

asp.net @OutputCache 12個屬性及使用注意問題

作者:admin    時間:2023-4-28 15:8:39    瀏覽:

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"  
%>

特性

Duration

頁或用戶控件進行緩存的時間(以秒計)。 在頁或用戶控件上設(shè)置該特性為來自對象的 HTTP 響應(yīng)建立了一個過期策略,并將自動緩存頁或用戶控件輸出。

注意!此特性必選。如果未包含該屬性,將出現(xiàn)分析器錯誤。

Location

OutputCacheLocation 枚舉值之一。 默認值為 Any

注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache 指令不支持此特性。

CacheProfile

與該頁關(guān)聯(lián)的緩存設(shè)置的名稱。 這是可選特性,默認值為空字符串 ("")。

注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache 指令不支持此特性。在頁中指定此屬性時,屬性值必須與 outputCacheSettings 節(jié)下面的 outputCacheProfiles 元素中的一個可用項的名稱匹配。如果此名稱與配置文件項不匹配,將引發(fā)異常。

參考:

NoStore

一個布爾值,它決定了是否阻止敏感信息的二級存儲。

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

ProviderName

一個字符串值,標識要使用的自定義輸出緩存提供程序。

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

Shared

一個布爾值,確定用戶控件輸出是否可以由多個頁共享。 默認值為 false。

注意!包含在 ASP.NET 頁(.aspx 文件)中的 @ OutputCache 指令不支持此特性。

SqlDependency

標識一組數(shù)據(jù)庫/表名稱對的字符串值,頁或控件的輸出緩存依賴于這些名稱對。 請注意,SqlCacheDependency 類監(jiān)視輸出緩存所依賴的數(shù)據(jù)庫中的表,因此當更新表中的項時,使用基于表的輪詢時將從緩存中移除這些項。 如果以值 CommandNotification 使用通知(在 Microsoft SQL Server 2005 中),則最終會使用 SqlDependency 類向 SQL Server 2005 服務(wù)器注冊查詢通知。

參考:

注意!SqlDependency 特性的 CommandNotification 值僅在網(wǎng)頁 (.aspx) 中有效。用戶控件只能將基于表的輪詢用于 @ OutputCache 指令。

VaryByCustom

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

VaryByHeader

分號分隔的 HTTP 標頭列表,用于使輸出緩存發(fā)生變化。 將該特性設(shè)為多標頭時,對于每個指定標頭組合,輸出緩存都包含一個不同版本的請求文檔。

注意!設(shè)置 VaryByHeader 特性將啟用在所有 HTTP 1.1 版緩存中緩存項,而不僅僅在 ASP.NET 緩存中進行緩存。用戶控件中的 @ OutputCache 指令不支持此特性。

VaryByParam

分號分隔的字符串列表,用于使輸出緩存發(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è)置為星號 (*))。

VaryByControl

一個分號分隔的字符串列表,用于更改用戶控件的輸出緩存。 這些字符串代表用戶控件中聲明的 ASP.NET 服務(wù)器控件的 ID 屬性值。

注意!在 ASP.NET 頁和用戶控件上使用 @ OutputCache 指令時,需要此特性或 VaryByParam 特性。

VaryByContentEncodings

以分號分隔的字符串列表,用于更改輸出緩存。 將 VaryByContentEncodings 特性用于 Accept-Encoding 標頭,可確定不同內(nèi)容編碼獲得緩存響應(yīng)的方式。有關(guān)如何指定 Accept-Encoding 標頭的更多信息,請參見文章標頭“Vary:Accept-Encoding”指定方法及其重要性分析。

總結(jié)

本文介紹了asp.net @OutputCache 的12個屬性及使用注意問題。

相關(guān)文章

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