zoukankan      html  css  js  c++  java
  • 缓存一、Asp.net页面缓存

    本篇文章是个人对Asp.net缓存的理解,在写文章中过程中参考了以下博文:

    http://www.cnblogs.com/fish-li/archive/2012/01/11/2320027.html#_labelStart

    http://www.cnblogs.com/haiyabtx/archive/2012/11/18/2776462.html

    相信大家在面试时,经常被问到的问题就是如何提高程序性能?有用过缓存吗?缓存有哪些实现?等等…在数据驱动的Web开发中,经常要重复从数据库中执行查询获取数据,这种重复增加了服务器、数据库、及网络负载。通过缓存可以解决这些问题,提高访问速度和效率。本篇文档主要讨论的是Asp.net中让浏览器端实现Cache缓存。后面在学习和整理服务器端缓存对象Cache、自定义缓存(静态、字典等)、Memcached,待整理后再发布博文与大家讨论。

    页面全局缓存

    本例很简单,就是在MVC默认工程结构下创建了MyCacheController和Index页面,在index页面上按F5时输出当前时间。工程结构如下图

    Index.cshtml页面代码 

    @{
    
    ViewBag.Title = "Index"; 
    
    }
    
    <h2>Index</h2>
    
    当前时间:@DateTime.Now.ToString("HH:mm:ss.ffff") 

    MyCacheController.cs代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    
    namespace CacheMvc.Controllers
    {
        public class MyCacheController : Controller
        {
            public ActionResult Index()
            {
                return View();
            }
    
        }
    }

    默认不设置页面缓存,用Fiddler查看Header请求情况,InspectorsàHeaders中可查看到,Cache显示的 Cache-Control:private,意思是当前页面是没有缓存的。所以这个时间页面每按一次F5就进行请求一次服务器,并且显示当前最新时间。

    修改代码,设置为客户端浏览器缓存10秒

            [OutputCache(Duration=10)]
            public ActionResult Index()
            {
                return View();
            }

    Fiddler查看Header请求情况,InspectorsàHeaders中可查看到,在设置为页面缓存后可以看到Cache 的显示结果改变了Cache-Control:public,max-age=10。这时客户端浏览器对此页面进行了缓存。与上图中显示的Private是不一样的。这时再按F5进行页面刷新,Http返回的状态为304,且下图中④处Entity显示为 Last-Modified:Tue,31Mar 2015 08:36:35GMT,证明此时刷新页面浏览器并没有去请求服务器端,而是显示的上一次缓存内容。

    HTTP 304 状态的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

    这样只需要在后台代码中加入一句[OutputCache(Duration=10)]就实现了客户端页面缓存10秒,实现很简单吧,通过上面的实例我们可以验证的结果是,用户发出请求指令时,如果被请求的页面有缓存且没过期,则浏览器不会发起至服务器的请求,而是直接显示缓存页。这样可以有效的减少对服务器的请求,从而提升效率。

    具体在实际应用中,比如查看当前登录用户的积分、等级不需要实时刷新的页面可以进行缓存。

    如果觉得喜欢本文或对您有帮助,请记得点推荐哟!
    作 者 :zhouxy
    邮 箱 :799791187@qq.com
    本文版权归作者和博客园共有,欢迎转载,但须保留此声明,且在文章页面明显位置给出原文连接。
    如果本文有什么不妥或者错误的地方,请您一定要在评论中指出,我会及时查明并修正!非常感谢您的不吝赐教!
  • 相关阅读:
    PHP string
    MUI体验框架
    OPP面向对象的介绍及使用
    分享一个实用插件(页面滚动触发动画)以及其内部的所有动画属性值
    对于Bootstrap的介绍以及如何使用
    JS中的内置对象简介与简单的属性方法
    如何使用JS实现banner图滚动
    如何用JavaScript制作循环图形
    javascript高级程序设计阅读总结
    读心术小游戏
  • 原文地址:https://www.cnblogs.com/vinzhou/p/4383025.html
Copyright © 2011-2022 走看看