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

 
 

OutputCache缓存各参数的说明的更多相关文章

  1. C# ObjectCache、OutputCache缓存

    /// <summary> /// 缓存操作类 /// </summary> public class Cache { private static List<strin ...

  2. 转载ASP.net 中 OutputCache 指令各个参数的作用

    使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...

  3. MVC中配置OutputCache的VaryByParam参数无效的问题

    在项目使用OutputCacheAttribute是遇到了问题,当我想在配置文件web.config中配置OutputCache的VaryByParam时竟然不起作用,下面是相关代码: 文件FaceC ...

  4. ASP.net 中 OutputCache 指令各个参数的作用

    使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...

  5. ASP.net 中 OutputCache 指令各个参数的作用。

    使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...

  6. [置顶] MVC输出缓存(OutputCache参数详解)

    1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...

  7. MVC输出缓存(OutputCache参数详解)

    版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...

  8. OutputCache各参数的说明

    OutputCache各参数的说明 Duration 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location Location当被设置为 ...

  9. .Net页面缓存OutPutCache详解

    一 它在Web.Config中的位置 <system.web> <!--页面缓存--> <caching> <outputCacheSettings> ...

随机推荐

  1. java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

    /** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...

  2. REST_FRAMEWORK加深记忆-加了API_ROOT及超链接的CASE

    urls.py from django.conf.urls import url from rest_framework.urlpatterns import format_suffix_patter ...

  3. Win7-其中的文件夹或文件已在另一个程序中打开

    Win7-其中的文件夹或文件已在另一个程序中打开 如何解决Win7系统在删除或移动文件时提示,“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开,请关闭该文件夹或文件,然后重试”.   步骤阅 ...

  4. Ubuntu 14.04 + Linux 3.14.34 系统调用实现文件拷贝

    采用 64位系统, ubuntu 14.04 + 新内核linux-3.14.34 下载地址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.1 ...

  5. fhq_treap 总结

    今天跟着zcg大神学了一发fhq_treap 发现在维护区间问题上fhq_treap不仅思维量小,而且代码量更小 是Splay的不错的替代品,不过至今还是有一些问题不能很好的解决 譬如查询某个数在序列 ...

  6. BZOJ 3720 gty的妹子树

    块状树裸题 块状树: 首先对树进行分块,分出的每一块都是一个连通块 通常的分块的方式如下: 1.父亲所在块不满,分到父亲所在块中 2.父亲所在块满,自己单独开一个块 (貌似有更为优越的分块方式? 注意 ...

  7. [mock]7月25日

    1. 将一个数组分成左右两部分,使得右边的某个连续子段和减去左边的某个连续字段和最小[7,8,9,|3,5,-1] sum right - sum left minimal 想到左右分一刀,O(n), ...

  8. MSSQLServer基础07(事务,存储过程,分页的存储过程,触发器)

    事务 事务:保证多个操作全部成功,否则全部失败,这处机制就是事务 思考:下了个订单,但是在保存详细信息时出错了,这样可以成功吗? 数据库中的事务:代码全都成功则提交,如果有某一条语句失败则回滚,整体失 ...

  9. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  10. QTP不能打开或者新建FunctionLibrary的解决方法

    今天打开QTP,然后打开function library的时候,qtp窗口右下角一直都是open...状态,怀疑是qtp与其他的软件冲突了. 解决方法: 直接执行QTP安装程序,然后选择修复QTP,问 ...