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头介绍

我的微博地址是:http://weibo.com/yukaizhao 我会把一些技术心得碎片写到微博中,欢迎关注。
posted @ 2010-06-10 08:08 玉开 阅读(484) 评论(4) 编辑 收藏

 回复 引用 查看   
#1楼[楼主]2010-06-10 08:20 | 玉开      
自己感觉这篇文章很水,写了两天也没有放出来,对于OutputCache写不出什么东西来。自我鼓励一下,下一篇再接再厉吧。

对不起观众了。

 回复 引用 查看   
#2楼2010-06-11 11:36 | 南通SEO      
哈哈,再接再厉
 回复 引用 查看   
#3楼2010-06-29 22:12 | ITLOVER      
我感觉很受用,真的。
最近一直在关注你的网站架构及asp.net相关的文章。
加油。
我总是找不到时间写,想写一些Silverlight的经验,总结一下自己的asp.net技术,却没有行动。。加班一个多月了,有点累。哈哈。。。

 回复 引用 查看   
#4楼[楼主]2010-06-30 08:07 | 玉开      
@ITLOVER
呵呵,一起加油呀

发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1755217 E8lmZfOvgu4=