zoukankan      html  css  js  c++  java
  • [Asp.net]缓存简介

    写在前面

    针对一些经常访问而很少改变的数据,使用缓存,可以提高性能。缓存是一种用空间换取时间的技术,说的直白点就是,第一次访问从数据库中读取数据,然后将这些数据存在一个地方,比如内存,硬盘中,再次访问的时候,不必再从数据库中读取,而是从内存或者硬盘中读取数据,可以提高访问速度。

    缓存

    缓存是一种利用空间换取时间的技术,通俗点也就是将得到的数据放在内存中或者硬盘中,在这段时间内服务器不去读取数据库,或真实的数据源,而是读取你存在内存中的数据。

    作用:缓存可以有效的缓解数据库的压力。

    一个例子

    还是先看一个简单的例子,然后对缓存有一个直观的了解。

     public partial class CacheIndex : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    DateTime dt = DateTime.Now;
                    //如果缓存中没有currentTime的值,则设置,否则输出缓存中的值
                    if (Cache["currentTime"] == null)
                    {
                        //将当前时间存入缓存
                        Cache["currentTime"] = dt;
                        //输出值
                        Response.Write("第一次读取的时间:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    else
                    {
                        //否则输出缓存中的值
                        dt = (DateTime)Cache["currentTime"];
                        //输出值
                        Response.Write("从缓存中读取的时间:"+dt.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                   
                }
            }
        }

    第一次访问页面时,会读取当前时间,然后将其写入缓存,刷新页面你会发现,之后读取的值,来自缓存中的数据。如果要清空缓存,可以将其设置为null。

    这种设置缓存的方式,是最直观也是最简单的方式。

    那么我们是否可以为其设置过期时间呢?当然是可以的,下面看这样一个例子:

      public partial class CacheIndex : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    DateTime dt = DateTime.Now;
                    //如果缓存中没有currentTime的值,则设置,否则输出缓存中的值
                    if (Cache["currentTime"] == null)
                    {
                        //将当前时间存入缓存
                        /*
                        @第一个参数:缓存键
                        @第二个参数:缓存的值
                        @第三个参数:缓存依赖项,可以为null,不为其设置依赖项。
                        @第四个参数:缓存时间,为30秒
                        @第五个参数:缓存过期时间类型,这里是绝对过期时间,每刷新一次页面之后30秒缓存过期。
                        */
                        Cache.Insert("currentTime", dt, null, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration);
                        //输出值
                        Response.Write("第一次读取的时间:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                    else
                    {
                        //否则输出缓存中的值
                        dt = (DateTime)Cache["currentTime"];
                        //输出值
                        Response.Write("从缓存中读取的时间:" + dt.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
    
                }
            }
        }

    无法同时设置 absoluteExpiration 和 slidingExpiration 参数。如果要让缓存项在特定时间到期,可将 absoluteExpiration 参数设置为特定时间,并将 slidingExpiration(滑动过期时间) 参数设置为 NoSlidingExpiration。

    如果要让缓存项在最后一次访问该项后的某段时间之后到期,可将 slidingExpiration 参数设置为到期间隔,并将 absoluteExpiration(绝对过期时间) 参数设置为 NoAbsoluteExpiration。

     总结

    这里简单介绍了缓存的概念,以及举了一个缓存的例子。这里面需要对缓存中的两种过期时间好好体会,绝对过期时间和滑动过期时间。

  • 相关阅读:
    Android开发总结
    LeakCanary原理分析
    机器学习
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 3. 循环
    Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 2. 变量
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 1. 神秘朋友
    Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 0. 准备工作
    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
  • 原文地址:https://www.cnblogs.com/hehehehehe/p/6196160.html
Copyright © 2011-2022 走看看