asp.net @OutputCache 12个属性使用介绍
作者:admin 时间:2023-6-13 21:34:11 浏览:asp.net 的 @OutputCache
,是以声明方式控制 ASP.NET 页面或页面中包含的用户控件的输出缓存策略。
@OutputCache
包含有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
枚举值之一。默认值为 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
值仅在 Web (.aspx) 页面上有效。用户控件只能通过 @OutputCache
指令使用基于表的轮询。
VaryByCustom
表示自定义输出缓存要求的任何文本。如果此属性的值为浏览器,则缓存会因浏览器名称和主要版本信息而异。如果输入自定义字符串,则必须覆盖应用程序的 Global.asax 文件中的GetVaryByCustomString
方法。
VaryByHeader
用于改变输出缓存的以分号分隔的 HTTP 标头列表。当此属性设置为多个标头时,输出缓存包含指定标头的每个组合的不同版本的请求文档。
笔记
设置 VaryByHeader
属性可以在所有 HTTP 1.1 版缓存中启用缓存项目,而不仅仅是 ASP.NET 缓存。用户控件中的 @OutputCache
指令不支持此属性。
VaryByParam
用于改变输出缓存的以分号分隔的字符串列表。默认情况下,这些字符串对应于使用 GET 方法属性发送的查询字符串值,或使用 POST 方法发送的参数。当此属性设置为多个参数时,输出缓存包含指定参数的每个组合的不同版本的请求文档。可能的值包括无、星号 (*) 和任何有效的查询字符串或 POST 参数名称。
在 ASP.NET 页面和用户控件上使用 @OutputCache
指令时,需要此属性或 VaryByControl
属性。如果你未能包含它,则会发生解析器错误。如果你不想指定参数来改变缓存的内容,请将值设置为 none。如果要通过所有参数值改变输出缓存,请将属性设置为星号 (*)。
VaryByControl
一个以分号分隔的字符串列表,用于改变用户控件的输出缓存。这些字符串表示在用户控件中声明的 ASP.NET 服务器控件的 ID 属性值。
笔记
在 ASP.NET 页面和用户控件上使用 @OutputCache 指令时,需要此属性或 VaryByParam 属性。
VaryByContentEncodings
用于改变输出缓存的以分号分隔的字符串列表。VaryByContentEncodings
属性与 Accept-Encoding
标头一起使用,以确定如何为不同的内容编码提供缓存的响应。
评论
设置页面OutputCache
的值与通过Cache
属性操作SetExpires
和SetCacheability
方法相同。
如果 Web 窗体页面需要用户授权才能查看,则OutputCache
会将 Cache-Control HTTP
标头设置为私有。
如果将 Shared
属性设置为 true,则多个 Web 窗体页面可以访问缓存的用户控件输出。如果不将其设置为 true,则默认行为是为包含该用户控件的每个页面缓存一个版本的用户控件输出。通过启用 Shared
属性,你可以潜在地节省大量内存。
例子
以下代码示例演示如何设置页面或用户控件OutputCache
的持续时间。
<%@ OutputCache Duration="100" VaryByParam="none" %>
下一个代码示例演示如何指示输出缓存根据来自表单的 POST 方法或查询字符串的位置和计数表单参数来缓存页面或用户控件。每个带有不同位置或计数参数(或两者)的 HTTP 请求都会缓存十秒。任何具有相同参数值的后续请求都将从缓存中得到满足,直到条目过期为止。
<%@ OutputCache Duration="10" VaryByParam="location;count" %>
相关文章
标签: asp.net OutputCache
- 站长推荐