技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

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

页或用户控件进行缓存的时间(以秒计)。 在页或用户控件上设置该特性为来自对象的 HTTP 响应建立了一个过期策略,并将自动缓存页或用户控件输出。

注意!此特性必选。如果未包含该属性,将出现分析器错误。

Location

OutputCacheLocation 枚举值之一。 默认值为 Any

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

CacheProfile

与该页关联的缓存设置的名称。 这是可选特性,默认值为空字符串 ("")。

注意!包含在用户控件(.ascx 文件)中的 @ OutputCache 指令不支持此特性。在页中指定此属性时,属性值必须与 outputCacheSettings 节下面的 outputCacheProfiles 元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。

参考:

NoStore

一个布尔值,它决定了是否阻止敏感信息的二级存储。

注意!包含在用户控件(.ascx 文件)中的 @ OutputCache 指令不支持此特性。将此特性设置为 true 等效于在请求期间执行以下代码: Response.Cache.SetNoStore();

ProviderName

一个字符串值,标识要使用的自定义输出缓存提供程序。

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

Shared

一个布尔值,确定用户控件输出是否可以由多个页共享。 默认值为 false

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

SqlDependency

标识一组数据库/表名称对的字符串值,页或控件的输出缓存依赖于这些名称对。 请注意,SqlCacheDependency 类监视输出缓存所依赖的数据库中的表,因此当更新表中的项时,使用基于表的轮询时将从缓存中移除这些项。 如果以值 CommandNotification 使用通知(在 Microsoft SQL Server 2005 中),则最终会使用 SqlDependency 类向 SQL Server 2005 服务器注册查询通知。

参考:

注意!SqlDependency 特性的 CommandNotification 值仅在网页 (.aspx) 中有效。用户控件只能将基于表的轮询用于 @ OutputCache 指令。

VaryByCustom

表示自定义输出缓存要求的任意文本。 如果特性的赋值为 browser,缓存将随浏览器名称和主要版本信息的不同而异。 如果输入自定义字符串,则必须在应用程序的 Global.asax 文件中重写 GetVaryByCustomString 方法。

VaryByHeader

分号分隔的 HTTP 标头列表,用于使输出缓存发生变化。 将该特性设为多标头时,对于每个指定标头组合,输出缓存都包含一个不同版本的请求文档。

注意!设置 VaryByHeader 特性将启用在所有 HTTP 1.1 版缓存中缓存项,而不仅仅在 ASP.NET 缓存中进行缓存。用户控件中的 @ OutputCache 指令不支持此特性。

VaryByParam

分号分隔的字符串列表,用于使输出缓存发生变化。 默认情况下,这些字符串对应于使用 GET 方法特性发送的查询字符串值,或者使用 POST 方法发送的参数。 将该特性设置为多个参数时,对于每个指定参数组合,输出缓存都包含一个不同版本的请求文档。 可能的值包括 none、星号 (*) 以及任何有效的查询字符串或 POST 参数名称。

注意!在 ASP.NET 页和用户控件上使用 @ OutputCache 指令时,需要此特性或 VaryByControl 特性。如果没有包含它,则发生分析器错误。如果不希望通过指定参数来改变缓存内容,请将值设置为 none。如果希望通过所有的参数值改变输出缓存,请将特性设置为星号 (*))。

VaryByControl

一个分号分隔的字符串列表,用于更改用户控件的输出缓存。 这些字符串代表用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。

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

VaryByContentEncodings

以分号分隔的字符串列表,用于更改输出缓存。 将 VaryByContentEncodings 特性用于 Accept-Encoding 标头,可确定不同内容编码获得缓存响应的方式。有关如何指定 Accept-Encoding 标头的更多信息,请参见文章标头“Vary:Accept-Encoding”指定方法及其重要性分析

总结

本文介绍了asp.net @OutputCache 的12个属性及使用注意问题。

相关文章

标签: asp.net  OutputCache  缓存  
x
  • 站长推荐
/* 左侧显示文章内容目录 */