zoukankan      html  css  js  c++  java
  • 缓存整个页面

    3.2.3 缓存整个页面

    在一些大型门户系统中,访问量特别大,可能每分钟就会有上千次的访问。而且通常门户系统的首页非常复杂,项目特别多,每一次访问都需要多次操作数据库。这对服务器的性能是个很大的考验。

    但是我们发现通常服务器首页更新的频率不是非常快。所以,完全可以让服务器的首页缓存起来,过一段时间再更新。这样服务器就不用每次请求都重新读取数据库并生成页面了。

    刚好,ASP.NET为我们提供了一个@OutputCache指令,我们只要在需要缓存数据的页面使用该指令,即可实现对整个页面进行缓存。 视频教学:光盘/videos/3/OutputCacheCommand.avi 长度:6分钟

    1. 基础知识——@OutputCache指令

    @OutputCache指令用于以声明的方式控制ASP.NET页或页中包含的用户控件的输出缓存策略。格式如下:

    1. <%@ 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窗体,在页面里添加如下两行代码:

    1. <%=DateTime.Now.ToString() %>   
    2. <script>setTimeout("locationlocation.href=location.href",1000)</script

    第一行在页面中打印当前时间,第二行使页面每隔1秒钟刷新一次。

    (3) 在页面头部添加缓存代码如下:

    1. <%@ OutputCache Duration="5" VaryByControl="none" %

    4. 运行结果

    保存所有文件,运行项目。

    访问OutputCache.aspx页面,结果如图3-5所示。

     
    图3-5 OutputCache.aspx页面

    该页面将每秒钟更新一次,但是页面内容会缓存5次,在第6次访问的时候更新。

    5. 实例分析

    源码解析:

    该实例非常简单,在页面打印当前时间,并让页面每秒钟刷新一次。然后设置页面缓存5秒钟。

    其实细心的读者可能会发现页面时间每次更新都会跨越6秒,而不是我们想象中的5秒钟换一个值。这是因为系统计算时间是在第一次访问开始,到第5次刷新时刚好5秒,所以这次显示的还是第一次访问的时间。处理完该次请求,缓存的数据作废,在第6次刷新(即第7次访问)的时候页面才重新生成并缓存页面。

  • 相关阅读:
    Day 50
    Spring Boot logging 配置及相关属性
    spring boot的项目名称问题
    spring boot的项目结构问题
    @RestController无法自动注入的问题
    mysql的模糊查询
    写点什么来为自己的过去和未来画个分隔符
    python学习随笔day2
    python学习随笔day1
    linux文件上传和下载
  • 原文地址:https://www.cnblogs.com/yaoxiaodan/p/5290160.html
Copyright © 2011-2022 走看看