缓存整个页面
Posted 姚小丹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存整个页面相关的知识,希望对你有一定的参考价值。
3.2.3 缓存整个页面
在一些大型门户系统中,访问量特别大,可能每分钟就会有上千次的访问。而且通常门户系统的首页非常复杂,项目特别多,每一次访问都需要多次操作数据库。这对服务器的性能是个很大的考验。
但是我们发现通常服务器首页更新的频率不是非常快。所以,完全可以让服务器的首页缓存起来,过一段时间再更新。这样服务器就不用每次请求都重新读取数据库并生成页面了。
刚好,ASP.NET为我们提供了一个@OutputCache指令,我们只要在需要缓存数据的页面使用该指令,即可实现对整个页面进行缓存。 视频教学:光盘/videos/3/OutputCacheCommand.avi 长度:6分钟
1. 基础知识——@OutputCache指令
@OutputCache指令用于以声明的方式控制ASP.NET页或页中包含的用户控件的输出缓存策略。格式如下:
- <%@ OutputCache Duration="5" VaryByControl="none" %>
这行语句的意思是无条件地为该页缓存5秒钟。
@OutputCache指令的属性如表3-6所示。
表3-6 @OutputCache指令属性
在@OutputCache指令的所有属性中,其中Duration和VaryByParam属性是必选的属性。
2. 实例描述
为了方便,这里我们就不再模拟一个大型门户系统了。
我们只在页面上打印当前时间,并让页面每秒钟刷新一次。这样的话,每一次刷新打印的时间都会不一样。
在这个前提下我们将该页面缓存5秒,如果缓存成功,则5秒内页面数据不会变化,在第6秒时才更改为新的时间值。
3. 实例应用
【例3-3】缓存整个页面。
(1) 打开上节使用的项目,创建一个新的Web窗体,命名为OutputCache.aspx。
(2) 编辑该Web窗体,在页面里添加如下两行代码:
- <%=DateTime.Now.ToString() %>
- <script>setTimeout("locationlocation.href=location.href",1000)</script>
第一行在页面中打印当前时间,第二行使页面每隔1秒钟刷新一次。
(3) 在页面头部添加缓存代码如下:
- <%@ OutputCache Duration="5" VaryByControl="none" %>
4. 运行结果
保存所有文件,运行项目。
访问OutputCache.aspx页面,结果如图3-5所示。
图3-5 OutputCache.aspx页面 |
该页面将每秒钟更新一次,但是页面内容会缓存5次,在第6次访问的时候更新。
5. 实例分析
源码解析:
该实例非常简单,在页面打印当前时间,并让页面每秒钟刷新一次。然后设置页面缓存5秒钟。
其实细心的读者可能会发现页面时间每次更新都会跨越6秒,而不是我们想象中的5秒钟换一个值。这是因为系统计算时间是在第一次访问开始,到第5次刷新时刚好5秒,所以这次显示的还是第一次访问的时间。处理完该次请求,缓存的数据作废,在第6次刷新(即第7次访问)的时候页面才重新生成并缓存页面。
以上是关于缓存整个页面的主要内容,如果未能解决你的问题,请参考以下文章