ASP.NET缓存技术学习入门---页面缓存(OutPut Caching)

  以前写程序从来都没用过缓存(水平太菜),好在以前做的网站访问量都非常的小,所以性能问题也不突出,但是如果做一个正规的项目,不论大小,缓存技术是必须要使用到的。今天学习了三种常用的缓存技术,下面先讲第一种,非常的简单,相信大家一定能看明白。

  先说下为什么要用缓存,在正常情况下,当一个用户要访问www.abc.com/index.aspx这个页面时,他的IE会给我们的网站服务器端发出一个浏览请求,我们的服务器收到请求后就会执行index.aspx文件相关的代码,执行完成后生成一个HTML文件,然后发送给用户的IE,如果有1000个人访问这个页面的话,哪服务器就要把index.aspx的代码执行1000次再发送1000次,在使用页面缓存技术之后我们把index.aspx页面缓存起来,这样就有可能做到1000个人访问,服务器只执行200次代码,再发送1000次,与前面相比较服务器少执行800次代码,大家想想看这会对服务器的效率有多么大的提高啊!如何做到这一点呢?请看“页面缓存”

页面缓存(OutPut Caching)


  页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明
<%@ OutputCache Duration="60" VaryByParam="none" %>
Duration="60" 的意思是指定缓存的时间为60秒,可根据情况自已设定
VaryByParam="none" 的意思是设定无参数缓存(有参数的缓存下面会讲到)
  这两个参数是必须的,不能缺省。另外还有一个重要的参数
DiskCacheable="true|false" 意思是要不要把缓存放到硬盘上,如果设为false则缓存数据会放到内存中

  这里需要注意一下,如果页面数据很小的话可以把缓存数据放到内存中,如果数据较大最好放到硬盘上,
否则会占用大量内存影响服务器运行,如果数据缓存到硬盘上的话,记得要把Duration=""的值设的大一些如Duration="3600",如果设的太小,服务器会过于频繁的在硬盘上写数据反而会降低性能,如果在内存中缓存数据Duration""则不要设的太长,当然具体时间长短要大家自己多尝试才知道。

  以上就是一个最简单的页面缓存的实现方法,再来回过头讲一下原理,先看个例子:
  新建一个cache1.aspx文件,在页面开始处加一句<%@ OutputCache Duration="60" VaryByParam="none"
%>然后在代码里写一句Response.Write(DateTime.Now),运行后显示出了当前时间,好,我们开始刷新这个页面,你会发现页面显示的时间停住不变,始终是第一次运行时的时间,现在,我们等待1分钟后再刷新页面,这时页面显示的时间变成了当前时间,再反复刷新,显示的时间又不变了,为什么呢?当第一个用户请求浏览cache1.aspx页时,服务器会执行cache1.aspx的代码生成一个HTML发送给用户,同时把这个HTML缓存到内存中,当第二次,第三次……发送浏览请求时,服务器不再执行cache1.aspx里的代码而是直接把缓存中的HTML发给用户端,60秒内都是如此,60秒后缓存被消除,当下一个请求出现时服务器会再执行cache1.aspx的代码,并把生成的HTML缓存60秒……

  这里我们要注意一个问题,如果你的部分数据要求能够实时显示的话,那就不能使用整页缓存了,就要使用部分缓存,如何部分缓存,最简单的办法就是自定义一个用户控件,在用户控件里开头加<%@ OutputCache Duration="60" VaryByParam="none" %>的声明,这样当你在某个页面里使用这个控件时,页面里的其他数据不会被缓存,只有这个控件的内容会被缓存,具体就说了,很简单,大家自己试一试吧! 

注意:DiskCacheable="true|false"的设置在VS2005正式版里不再正式支持,所以在MSDN里找不到关于它的说明,我咨询了微软的讲师,说是把缓存放到硬盘上在实际使用中会出现一些问题.现在我们在VS2005正式版里依然可以使用这个设置,但是会不会产生实际效果我就不清楚了,大家有知道的就说一声吧!

posted @ 2008-10-14 14:53  Jack.Net  阅读(3567)  评论(5编辑  收藏  举报