OutputCache缓存各参数的说明
缓存时间,以秒为单位,这个除非你的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缓存各参数的说明的更多相关文章
- C# ObjectCache、OutputCache缓存
/// <summary> /// 缓存操作类 /// </summary> public class Cache { private static List<strin ...
- 转载ASP.net 中 OutputCache 指令各个参数的作用
使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...
- MVC中配置OutputCache的VaryByParam参数无效的问题
在项目使用OutputCacheAttribute是遇到了问题,当我想在配置文件web.config中配置OutputCache的VaryByParam时竟然不起作用,下面是相关代码: 文件FaceC ...
- ASP.net 中 OutputCache 指令各个参数的作用
使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...
- ASP.net 中 OutputCache 指令各个参数的作用。
使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要.@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明.这种方式非 ...
- [置顶]
MVC输出缓存(OutputCache参数详解)
1.学习之前你应该知道这些 几乎每个项目都会用到缓存,这是必然的.以前在学校时做的网站基本上的一个标准就是1.搞定增删改查2.页面做的不要太差3.能运行(ps真的有这种情况,答辩验收的时候几个人在讲台 ...
- MVC输出缓存(OutputCache参数详解)
版权声明:本文为博主原创文章,未经博主允许转载随意. https://blog.csdn.net/kebi007/article/details/59199115 1.学习之前你应该知道这些 几乎每个 ...
- OutputCache各参数的说明
OutputCache各参数的说明 Duration 缓存时间,以秒为单位,这个除非你的Location=None,可以不添加此属性,其余时候都是必须的. Location Location当被设置为 ...
- .Net页面缓存OutPutCache详解
一 它在Web.Config中的位置 <system.web> <!--页面缓存--> <caching> <outputCacheSettings> ...
随机推荐
- 2> How Struts 2 Works
The first thing we should consider is that the workflow of figure 1.4 still obeys the sim- pler MVC ...
- C#图片上写文字
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Dr ...
- HDU 1227 Fast Food (DP)
题目链接 题意 : 有n个饭店,要求建k个供应点,要求每个供应点一定要建造在某个饭店的位置上,然后饭店都到最近的供应点拿货,求出所有饭店到最近的供应点的最短距离. 思路 : 一开始没看出来是DP,后来 ...
- Android中JSON数据格式的简单使用
源码: package com.wangzhu.demo; import java.io.BufferedReader; import java.io.IOException; import java ...
- THUSC 2016游记
又去北京转了一圈,拿到了很不错的协议,非常的开森 day -1 6.2 上午去pku的同学就走了QAQ 然后波哥说下午要考试,考联考题 我一脸无奈的表示我已经提前要到题目而且看了题了 然后波哥就决定给 ...
- 去掉eclipse的xml和js验证
一.XML Properties > Validation you have two options: 1- Configure Workspace Settings (disable the ...
- ios开发--27个提升效率的iOS开源库推荐
超长慎入列表: DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core D ...
- CentOS7 升级python同时解决yum损坏问题
CentOS7中的python版本为python2.7.5,升级到最新版的python时需要注意两个问题 新版的python安装好后要修改python的系统默认指向问题 升级到最新版python后yu ...
- POJ 1808 Quadratic Residues(平方剩余相关)
题目链接:http://poj.org/problem?id=1808 题意:如下.对于素数p,若存在x使得x^2%p=a,则其值为1.否则为-1.现在给出a.p,计算其值. 思路: 若a为正数则利用 ...
- IEDA常用设置
安装插件步骤省略,暂时不需要 IDEA菜单详解:基本有对应的快捷键或者是图标Help系列:Find Action:作用:快速新建文件,Ctrl + Shift + AHelp Topics:作用:帮助 ...