@OutputCache指令参数
-
Duration
- 指定页面或控件被缓存的时间 (以秒为单位). 设置页面或用户控件的缓存时间属性会为其建立相应的HTTP响应过期策略并且自动缓存输出结果。
- !该属性是必须的,如果没有指定将会引发解析器错误。
-
Location
- OutputCacheLocation枚举量
Any|Client|Downstream|None|Server|ServerAndClient
的取值。默认为Any
。 - !该属性不支持用户控件(.ascx文件)中的
@OutputCache
指令。 -
Shared
- 用来控制用户控件输出内容是否能够被多个页面共享。默认值为
false
。 - !该属性不支持ASP.NET页面(.aspx文件)中的
@OutputCache
指令。 -
VaryByCustom
- 任何自定义输出缓存的文字。如果将该属性设置为
browser
,将会缓存多种的浏览器名称与版本信息。当使用了自定义字符串之后,就必须在应用程序的Global.asax文件中对HttpApplication.GetVaryByCustomString
成员进行重载。 -
VaryByHeader
- 多个不同输出缓存所使用的HTTP响应头信息,并且通过分号进行分隔。当设置为多个响应头信息时,输出缓存将会为每个已指定的头信息缓存多个不同版本的响应文档。
- !设置VaryByHeader属性后将会启用所有HTTP 1.1缓存项,而不单单仅限于ASP.NET缓存项。用户控件中的
@OutputCache
指令不支持该属性。 -
VaryByParam
- 用于多个输出缓存的字符串列表,并以分号进行分隔。默认时,该字符串与GET方法传递的参数或与POST方法传递的变量相对应。当被设置为多个参数时,输出缓存将会为每个参数都准备一个与之相对应的文档版本。可能值包括
none
,*
,以及任何有效的查询串或POST参数名称。 - !该属性在需要进行缓存输出的ASP.NET页面中是必不可少的。而且在已指定了
VaryByControl
参数的@OutputCache
控件指令的情况下也如此。如果对其进行错误的包含将会引发解析器错误。如果您不想要为不同的已缓存内容指定参数,可以将其设置为none
。如果想要指定所有的已缓存内容参数,可以设置为*
。 -
VaryByControl
- 指定用户控件的输出缓存列表,并以分号作为分隔。字符串由被定义在用户控件中的ASP.NET服务器端控件的
ID
属性组成。 - !该参数在已指定了
VaryByParam
参数的@OutputCache
指令的用户控件中是必需的。但不被已指定@OutputCache
指令的ASP.NET页面所支持。
SqlDependency
指定缓存失效的数据库依赖项。可以具体到数据库和表。
具体配置具体要经过几个步骤:
1. 注册连接池
命令:aspnet_regsql -S 192.168.30.220\SQL2K -U sa -P sa -ed -d pubs -et -t test专门注册连接池的工具 在sql数据库的数据 库改变了,才改变缓存。
参数: _s 制定注册的服务器
_u和 _p 说明是sql数据库的授权模式、
_d 指定数据库的名字
_ed 说明缓存生效。
示例:
aspnet_regsql -S 192.168.30.220\SQL2K -U sa -P sa -ed -d pubs -et -t test
进行outputcache配置
<%@ OutputCache SqlDependency="pubs:test" Duration="100" VaryByParam="id"%>
2. 设置WebConfig
<connectionStrings>
<add name="mySqlServer" connectionString="Server=192.168.30.220\SQL2K;Database=pubs;uid=sa;pwd=sa;"/> </connectionStrings>
3.
<caching>
<sqlCacheDependency enabled="true">
<databases>
<add
connectionStringName="mySqlServer"
pollTime="500" />
</databases>
</sqlCacheDependency>
</caching>
name:必须是数据库的名字
connectionStringName:连接字符串的名称
除了可以建立数据库依赖,还可以建立文件依赖或者其他依赖(可以看”参考文档5”)。
CacheProfile
用于定义与该页关联的缓存设置的名称。是可选属性,默认值为空字符("")。需要注意的是,包含在用户控件中的@ OutputCache指令不支持此属性。在页面中指定此属性时,属性值必须与Web.config文件<outputCacheSettings>配置节下的outputCacheProfiles元素中的一个可用项的名称匹配。如果此名称与配置文件项不匹配,将引发异常。
示例:
<%@ OutputCache CacheProfile="Cache30Seconds" %>
配置:
Web.config
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="Cache30Seconds" duration="30"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
Add节里面的各个属性和OutPutCache相对应
注意OutputCache生命优先于outputCacheProfiles配置
比如:页面缓存10s, outputCacheProfiles设置缓存20s,则最后缓存10s
NoStore
bool值,用于决定是否阻止敏感信息的二级存储,默认值为 false