技術(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-4-28 15:8:39    瀏覽:

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

特性

Duration

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

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

Location

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

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

CacheProfile

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

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

參考:

NoStore

一個(gè)布爾值,它決定了是否阻止敏感信息的二級(jí)存儲(chǔ)。

注意!包含在用戶控件(.ascx 文件)中的 @ OutputCache 指令不支持此特性。將此特性設(shè)置為 true 等效于在請求期間執(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

標(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 指令。

VaryByCustom

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

VaryByHeader

分號(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 指令不支持此特性。

VaryByParam

分號(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) (*))。

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)的方式。有關(guān)如何指定 Accept-Encoding 標(biāo)頭的更多信息,請參見文章標(biāo)頭“Vary:Accept-Encoding”指定方法及其重要性分析。

總結(jié)

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

相關(guān)文章

標(biāo)簽: asp.net  OutputCache  緩存  
x