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
OutputCache各参数的说明的更多相关文章
- ASP.NET 中 OutputCache 指令参数详解
使用@ OutputCache指令使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非常 ...
- 【ASP.NET MVC 】让@Ajax.ActionLink获取的数据不进Cache
刚玩这个东西的时候,发现IE会进Cache,不管怎么删除,修改,后台删除了,前台还是一样,找了一下,HTML5只提供了 <meta http-equiv="pragma" c ...
- ASP.NET MVC3系列页面缓存、缓存依赖SQL(真实项目注意细节)
缓存依赖数据库 第一步 1通过vs里面带的命令提示窗口. 2或者.NET Framework 版本 4(64 位系统)条件,%windir%\Microsoft.NET\Framework64\v4. ...
- 缓存:前端页面缓存、服务器缓存(依赖SQL)MVC3
缓存依赖数据库 第一步 1通过vs里面带的命令提示窗口. 2或者.NET Framework 版本 4(64 位系统)条件,%windir%\Microsoft.NET\Framework64\v4. ...
- MVC 之 缓存机制(一)
一.概述 缓存是将信息(数据或页面)放在内存中以避免频繁的数据库存储或执行整个页面的生命周期,直到缓存的信息过期或依赖变更才再次从数据库中读取数据或重新执行页面的生命周期.在系统优化过程中,缓存是比较 ...
- MVC页面缓存
1.OutputCache 属性 contact.cshtml [OutputCache(Duration=10)] public ActionResult Contact() { ...
- MVC缓存OutPutCache学习笔记 (一) 参数配置
OutPutCache 参数详解 Duration : 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location : 缓存放置的位置; 该 ...
- OutputCache缓存各参数的说明
Duration 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location Location当被设置为None时,其余的任何设置将不起作用 ...
- 转载ASP.net 中 OutputCache 指令各个参数的作用
使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...
随机推荐
- Js弹性漂浮广告代码
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- tiny xml 使用总结
这几天在埋头写自己的3D文件浏览器(稍后发布),突发奇想的要把自己的内部格式转化成XML,于是,把以前在研究所时用过的ExPat翻了出来.ExPat是基于事件的XML解释器,速度挺快的,但结构方面有点 ...
- paip输入法编程之生活用高频字,以及汉字分级
paip输入法编程之生活用高频字 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/attilax ...
- Ruby和Rails开发环境安装
更新包管理 sudo apt-get update 安装curl sudo apt-get install curl *安装rvm via curl \curl -L https://get.rvm. ...
- 【JAVA编码专题】总结
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
- HTML5视频
<video>标签用于定义视频. 案例1: <!DOCTYPE html><html><head lang="en"> <me ...
- 递归:汉诺塔 - 零基础入门学习Python024
递归:汉诺塔 让编程改变世界 Change the world by program 似乎谈到递归算法就要拿汉诺塔来举例,没办法,因为小甲鱼小时候太笨了,这个游戏老是玩不过关,好不容易在自学编程的时候 ...
- c# 高效分页只需一个dll实例
第一.首先下载WebUIControl.dll http://pan.baidu.com/s/1gdkilDh 第二.添加引用 三.应用实例-前台代码 <%@ Register Assembly ...
- Web模板大全
http://www.dede58.com/a/free/ http://down.admin5.com/moban/109507.html http://www.chinaz.com/ http:/ ...
- java设计模式--行为型模式--策略模式
策略模式: 策略模式 概述 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法可独立于使用它的客户而变化. 适用性 1.许多相关的类仅仅是行为有异.“策略”提供了一种用多个行 ...