Asp.Net 网站性能优化 缓字决 Asp.Net 内置的输出缓存介绍
Asp.Net 中有两类缓存方式一种是对页面或者控件的输出内容缓存,一种是对数据的缓存;我们先来看看输出缓存。
输出缓存通常在页面或UserControl上做指令声明,如下示例:
<%@ OutputCache Duration="1000" Location="Any" VaryByParam="id" %>
在页面上声明的OutputCache指令是由OutputCacheModule处理的,OutputCacheModule配置在.Net framework的web.config文件中
<add name="OutputCache" type="System.Web.Caching.OutputCacheModule"/>
下面简单写下OutputCache指令属性在页面上的使用:
1. Duration这个值是必填值,以秒为单位指定缓存的失效时间
2. Location的值用来指定缓存数据的存放位置,其默认值为Any,Any表示可以存在在服务器端,客户端,或者代理服务器上;
3. NoStore设置为true表示通过http头通知浏览器不要存储页面
4. VaryByCustom表示自定义的缓存值是否改变,可以指定其值为browser,使不同浏览器使用不同的缓存版本,也可以指定自定义的缓存值,当指定值定义值时必须在Global文件中重写GetVaryByCustomString方法
5. VaryByHeader指定缓存版本随指定的http请求头的值变化
假如我们需要根据浏览器的不同输出不同的缓存版本我们可以这样指定OutputCache指令
<%@ OutputCache Duration="10" VaryByHeader="User-Agent" VaryByParam="None" %>
你可以在页面上输出下面内容,用ie和firefox分别访问页面,观察缓存变化情况
<p> <%=Request.UserAgent + " request at " + DateTime.Now%></p>
6. VaryByControl用来指定页面缓存需要根据控件的值的变化做变化
7. 最常用的VaryByParam用来指定是否根据或根据什么查询字符串的值做变化
在.Net 4.0中为我们提供了扩展OutputCache的接口,具体请看Asp.Net 4.0 新特性之 使用自定义OutputCache Provider.
另外向大家推荐有关客户端浏览器缓存的Http头介绍