OutputCache各参数的说明

 

OutputCache各参数的说明

Durationhtml

 

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

 

Locationsql

Location当被设置为None时,其他的任何设置将不起做用数据库

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

     Client——缓存在浏览器;缓存

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

     None——页面不缓存;cookie

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

默认为Any 。ide

!该属性不支持用户控件(.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

相关文章
相关标签/搜索