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

赞助商

分类目录

赞助商

最新文章

搜索

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属性操作SetExpiresSetCacheability方法相同。

如果 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  
x
  • 站长推荐
/* 左侧显示文章内容目录 */