ASP.NET页面输出缓存

开发 后端
本文介绍ASP.NET页面输出缓存,ASP.NET页面输出缓存与用户控件缓存在页面指令方面差不多,但在api上面有所区别。

最近因项目要求,需要研究ASP.NET缓存,可是查阅了书本,msdn,网上后有点失望,真是天下文章一大抄啊,大家讲来讲去都是那么几点,没有条理,没有重点,也没有心得,所以我决定自己来写一篇,当然,我是没有能力来改变这一现象的,只是写来自己备忘罢了。

首先有几点要说明:

1.个人认为缓存只有两种:ASP.NET页面输出缓存与应用程序数据缓存。一般大家也是这么认为的,但是有另外一部份人却把这两个部份分了又分,搞出三五种出来。这就让人感觉很多余了。

2.所谓控件缓存,其实是用户控件缓存。可能是我理解有问题,我一开始还以为那种html控件,web控件也可以进行缓存的。所以说定义名称要定义清楚。

3.实现缓存有两种方式:在aspx页面的顶部写页处理指令或者在cs代码里写代码(又叫缓存API),一种是静态设置,一各是动态设置。网上总有些人喜欢说来说去又不总结清楚,搞的人很烦。

4.实际上只要用到了缓存就一定有缓存依赖。只是有些不那么明显。在我看的文章里一般都把缓存依赖单独作为一章讲解,这是好事,因为在缓存的高级技术里缓存依赖是很重要的,但这并不代表有些缓存就没有缓存依赖。

好了,下面言归正传。我只讲常用的东东。

ASP.NET页面输出缓存。其实用户控件缓存跟它没有大的区别,只有一个location不能使用,在这里就一并讲了吧。
page指令:

  1. <%@ OutputCache Duration="10" VaryByParam="*" VaryByControl="txtInput" %> 

OutputCache是指令名。Duration是缓存时长,单位是秒。VaryByParam是跟据什么进行缓存。有两个特殊的值:none表示不随任何参数的不同而缓存,就是只缓存一个版本,表示随任何参数的不同而缓存,表示只要参数发生变化,就缓存一个新版本。VaryByControl是跟据控件名进行缓存。这里的控件是指一般的服务器控件,不能是用户控件,不然会出现意想不到的结果。

缓存API:
虽然ASP.NET页面输出缓存与用户控件缓存在页面指令方面差不多,但在api上面有所区别

页面缓存api:
映射的是System.Web.HttpCachePolicy类。
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(3));

***句对应的是Location,是说缓存在哪,public是哪里都缓存,nocache是都不缓存,private是客户端缓存,还有其它几个选项。比较关注的是:客户端,代理服务器,服务器。
第二句对应的是Duration,是说缓存时长,这是个绝对时间,是说到了那个时就是取消缓存。Response.Cache.VaryByParams["none"] = true;
对应的是VaryByParam用中括号括起参数,中间可用分号分隔多个参数,true表示启用此参数。没有对应VaryByControl的。

Response.Cache.SetSlidingExpiration(true);
当用了这一句的时候,所有缓存设置都不启作用了,原因是这个属性是用给代理服务器之类的处于浏览器和Web服务器之间的缓存使用的,而不是给Web服务器本身的.是特意设计成这样的.Response.Cache.SetNoServerCaching(),表示取消当前所有服务器缓存。

【编辑推荐】

  1. 简单介绍ASP应用程序
  2. ASP.NET的IScriptControl
  3. 详解ASP.NET身份验证服务
  4. 概述ASP.NET安全
  5. ASP.NET ISAPI
责任编辑:佚名 来源: 网易科技
相关推荐

2009-07-29 14:35:34

页面输出缓存ASP.NET

2009-07-31 10:23:44

缓存页面ASP.NET缓存

2009-07-29 15:34:13

2009-10-10 10:44:15

ASP.NET页面缓存

2009-07-23 14:17:41

2009-07-29 17:26:39

ASP.NET页面

2009-08-03 13:38:18

ASP.NET编程模型

2009-08-04 15:22:33

ASP.NET缓存机制

2009-07-23 10:52:38

2009-08-05 18:22:55

2009-07-27 15:25:40

aspx页面ASP.NET

2009-07-29 10:35:51

ASP.NET缓存

2009-07-23 14:21:55

ASP.NET页面

2009-07-28 16:40:11

ASP.NET异步页面

2009-07-21 15:40:59

Asp.Net动态页面

2009-07-23 14:08:58

2009-07-31 13:06:53

CheckBoxLisASP.NET页面

2009-08-03 18:35:51

ASP.NET数据缓存

2009-08-17 16:59:36

ASP.NET缓存机制

2009-05-11 13:48:00

ASP.NET 2.0缓存效率
点赞
收藏

51CTO技术栈公众号