`
javasogo
  • 浏览: 1774944 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

OutputCache各参数的说明

 
阅读更多

OutputCache各参数的说明 收藏
Duration

缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的。

Location

Location当被设置为None时,其余的任何设置将不起作用

Any——页面被缓存在浏览器、代理服务器端和web服务器端;

Client——缓存在浏览器;

DownStream——页面被缓存在浏览器和任何的代理服务器端;

None——页面不缓存;

ServerAndClient——页面被缓存在浏览器和web服务器端;

默认为Any 。

!该属性不支持用户控件(.ascx文件)中的@OutputCache指令。

Shared

用来控制用户控件输出内容是否能够被多个页面共享。默认值为false。

!该属性不支持ASP.NET页面(.aspx文件)中的@OutputCache指令。

VaryByCustom

任何自定义输出缓存的文字。如果将该属性设置为browser,将会缓存多种的浏览器名称与版本信息。当使用了自定义字符串之后,就必须在应用程序的Global.asax文件中对HttpApplication.GetVaryByCustomString成员进行重载。

VaryByHeader

多个不同输出缓存所使用的HTTP响应头信息,并且通过分号进行分隔。当设置为多个响应头信息时,输出缓存将会为每个已指定的头信息缓存多个不同版本的响应文档。

Accept-Language——代表请求页面中用户最希望的有优先级顺序的人类语言列表;

User-Agent——代表请求页面设备的类型;

Cookie——代表当前域名下创建的浏览器的cookie。项。

用户控件中的@OutputCache指令不支持该属性。

例如:设置VaryByHeader="Accept-Language"

当网站有多种语言版本时,可以为每种语言都进行缓存

可以更改IE的语言设置:IE—>工具àInternet选项à常规à语言来查看效果

VaryByParam

用于多个输出缓存的字符串列表,并以分号进行分隔。默认时,该字符串与GET方法传递的参数或与POST方法传递的变量相对应。当被设置为多个参数时,输出缓存将会为每个参数都准备一个与之相对应的文档版本。可能值包括none,*,以及任何有效的查询串或POST参数名称。

如果您不想要为不同的已缓存内容指定参数,可以将其设置为none。如果想要指定所有的已缓存内容参数,可以设置为*。

例如:

如果命令设置为:

<%@ OutputCache Duration="60" VaryByParam="ProductType" %>

当请求路径 bitauto.com/test.aspx?ProductType=1发生时,会建立缓存

当ProductType的值变为2时,系统会建立新的缓存,但是原来的缓存在有效期内并不会失效。相当于为不同的ProductType值建立了不同版本的缓存。如果熟悉.Net数据缓存的话,很类似于下面的用法。

Cache.Add(“productType1”,cachedObject)

Cache.Add(“productType2”,cachedObject)

VaryByControl

指定用户控件的输出缓存列表,并以分号作为分隔。字符串由被定义在用户控件中的ASP.NET服务器端控件的ID属性组成。

例如下面:根据页面上下拉列表控件的选择的值不同进行不同的缓存输出

<%@ OutputCache Duration="100" VaryByControl="dropTest"%>

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

DiskCacheable:

在.Net 2.0被遗弃

注:标红的是经常用的属性。

UserControl和Page中各命令参数比较(空 表示不支持)

简单介绍
Control
Page

Duration
缓存时间
支持
支持

Location
存储位置

支持

Shared
多页面共享
支持


VaryByParam
随参数改变
支持
支持

VaryByControl
随控件改变?
支持


VaryByHeader
Http协议头

支持

VaryByCustom
自定义改变值
支持
支持

SqlDependency
Sql依赖
支持
支持

CacheProfile
Cache配置节名称

支持

NoStore
是否有其他存储介质

支持

UserControl和Page中的一些区别:

1.作用范围:UserControl为页面局部的缓存,Page为页面全部的缓存

2.优先级: Page缓存优先级高于UserControl

例如:

UserControl : <%@ OutputCache Duration="60" VaryByParam="ProductType" %>

Page : <%@ OutputCache Duration="60" VaryByParam=" none" %>

当ProductType =1改变时,Page缓存并不更新(UserControl并不更新)

如果Page去掉 OutputCache命令,则ProductType更新时,Page会更新(Control更新)

4. 页面生命OutPutCahe缓存策略优先于后台代码:

比如<%@ OutputCache Duration="100" Location="Any" %>缓存100S

代码:Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));

结果缓存100秒

其他实现:

1.根据不同的语言缓存不同的版本:

Response.Cache.SetExpires(DateTime.Now.AddMinutes(1)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true);

Response.Cache.VaryByHeaders["Accept-Language"] = true;

2.文档以来缓存:

Response.AddFileDependency(Server.MapPath(Request.ApplicationPath + "/Web.Config"));

Response.Cache.SetExpires(DateTime.Now.AddMinutes(1));

Response.Cache.SetCacheability(HttpCacheability.Public);

参考文档:

1. ASP.NET 缓存:方法和最佳实践

http://www.microsoft.com/china/MSDN/library/WebServices/ASP.NET/ASP.NETCaching-TechniquesandBestPractiCEs.mspx?mfr=true

2. 数据缓存中页面部分和用户控件部分的说明
http://www.cnblogs.com/chenou/articles/603547.html

3. ASP.NET缓存策略经验谈

http://www.cnblogs.com/imissherso/articles/635563.html

4. ASP.NET 2.0的页面缓存功能介绍
http://www.cnblogs.com/Joshualang/archive/2007/01/24/OutputCache.html

5. 移除用户控件的输出缓存(OutputCache)

http://www.cnblogs.com/Truly/archive/2006/10/12/527206.aspx

6. P.NET 2.0 缓存技术 (原创)

http://www.cnblogs.com/ghd258/archive/2005/11/03/248896.html

7. 页面输出缓存

http://www.cnblogs.com/hide0511/archive/2006/10/21/535702.html

来源:http://blog.csdn.net/laolaolai/archive/2010/02/09/5301212.aspx

分享到:
评论

相关推荐

    AspNetWebApi-OutputCache-MongoDb-master

    AspNetWebApi-OutputCache-MongoDb-master

    ASP.NET OutputCache详解

    主要介绍了ASP.NET OutputCache详解,本文详细讲解了OutputCache的语法、OutputCache的参数、OutputCache使用示例等内容,需要的朋友可以参考下

    一个伴随ASP.NET从1.0到4.0的OutputCache Bug介绍

    在一个.aspx文件中增加OutputCache设置,代码如下: 代码如下: &lt;&#37;@ OutputCache Duration=”300″ VaryByParam=”*”%&gt; 上面的设置表示:缓存5分钟,根据不同的查询字符串更新缓存。Location使用的是默认值...

    outputcache:使用Redis,Memcached或NodeJS的任何缓存提供程序缓存api响应

    默认情况下,Outputcache会接受ttl原始响应中的状态,最大寿命,无存储,无缓存,私有和失效时标头。 这使您的服务可以使用http规则动态指示每个响应的ttl。 它也是高度可配置的- 。 快速-直接从缓存返回原始响应,...

    从中央气象台抓取各地区实时天气

    能够获取国内各省及省会城市的...&lt;%@ OutputCache Duration="1800" VaryByParam="none" %&gt; 1800以秒计算,如果总是实时流量太大的话会刷新影响中央气象台的服务器哦! 以上提到的XML都在同级目录下有,可以打开参看。

    SQL Server 高速缓存依赖分析

    一,使数据库支持SQL高速缓存依赖性。 二,使表支持SQL高速缓存依赖性。 三,在ASP.NET应用程序的web.config文件中包含SQL连接字符串。... 开启高速缓存依赖性的参数简要说明 -d  用于SQL高速缓存依

    CreateOutputCachedItemKey 缓存key的创建

    有关OutputCache的相关资料大家可以查看 OutputCacheProvider OutputCache的一点点认识 ,我们还是复习一下OutputCache内容

    ASP.NET性能优化之让浏览器缓存动态网页的方法

    OutputCache是针对所有访问服务器资源的用户,本篇要介绍的浏览器缓存则是针对单个用户,让浏览器在我们的控制下彻底不持续访问服务器上的动态内容,也就是我们要让浏览器变成我们的缓存机制中的一部分,在某些特定...

    充分利用ASP.NET的三种缓存提高站点性能的注意方法

    ASP.NET提供三种主要形式的缓存:页面级输出缓存、用户控件级输出缓存(或称为片段缓存)和缓存API。 尽早缓存;...@ OutputCache Duration=”60″ VaryByParam=”*” %&gt; 它支持五个属性(或参数),其

    asp.net(C#)禁止缓存文件不让文件缓存到客户端

    IIS会按文件地址及参数将文件缓存到客户端,以便再次访问该内容时速度更快。如果要取消这种机制则需要禁止缓存文件。 一、编程方式 Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);...

    asp.net 页面输出缓存

    @ OutPutCache Duration=”60″ VaryByParam=”none”%&gt; Duration:缓存时间 VaryByParam:通过参数来更新缓存的内容 还有其他的一些属性 CacheProfile:调用WebConfig中的缓存时间 例如:WebCofig中 代码如下: ...

    ASP.NET缓存 方法和最佳实践

    实现 要实现页面输出缓存,只要将一条 OutputCache 指令添加到页面即可。 <%@ OutputCache Duration=”60″ VaryByParam=”*” %> 如同其他页面指令一样,该指令应该出现在 ASPX 页面的顶部,即在任何输出之前...

    C#开发经验技巧宝典

    0405 使用OutputCache指令实现页面缓存 226 0406 设置网页缓存的位置 227 0407 使用Cache类实现应用程序数据缓存 227 0408 缓存网页的不同版本 227 10.3 Web页的绑定 228 0409 如何绑定变量 228 0410 ...

    博客 v1.2源码20121013

    页面缓存 OutputCache 以及对象缓存 HttpRuntime.Cache 如果你提交了文章发现首页没有更新,那是因为默认设置了5分钟的页面缓存。 webconfig中caching节点处,你可以在这里修改设置。 开发环境: Visual ...

    YQBlog - 基于Asp.Net MVC3 EF4.0技术的个人博客系统

    页面缓存 OutputCache 以及对象缓存 HttpRuntime.Cache 如果你提交了文章发现首页没有更新,那是因为默认设置了5分钟的页面缓存。 webconfig中caching节点处,你可以在这里修改设置。 开发环境: Visual ...

    个人博客系统源码

    页面缓存 OutputCache 以及对象缓存 HttpRuntime.Cache 如果你提交了文章发现首页没有更新,那是因为默认设置了5分钟的页面缓存。 webconfig中caching节点处,你可以在这里修改设置。 开发环境: Visual ...

    YQBlog个人博客系统源码201071

    页面缓存 OutputCache 以及对象缓存 HttpRuntime.Cache 如果你提交了文章发现首页没有更新,那是因为默认设置了5分钟的页面缓存。 webconfig中caching节点处,你可以在这里修改设置。 开发环境: Visual ...

Global site tag (gtag.js) - Google Analytics