public sealed class CacheManager
   {
     private HttpApplicationState appPool = null;
     /// <summary>
     /// 构造函数
     /// </summary>
     public CacheManager()
     {
       this.appPool = HttpContext.Current.Application;
     }
     /// <summary>
     /// 构造函数
     /// </summary>
     /// <param name="application">HttpApplicationState 对象</param>
     public CacheManager(HttpApplicationState application)
     {
       this.appPool = application;
     }
     /// <summary>
     /// 删除缓存
     /// </summary>
     /// <param name="key">缓存名称</param>
     public void Delete(string key)
     {
       this.appPool.Lock();
       this.appPool.Remove(key);
       this.appPool.Remove(key + "(expTime)");
       this.appPool.UnLock();
     }
     /// <summary>
     /// 添加缓存
     /// </summary>
     /// <param name="key">缓存名称</param>
     /// <param name="value">缓存值</param>
     /// <returns></returns>
     public bool Add(string key, object value)
     {
       try
       {
         this.appPool.Lock();
         this.appPool[key] = value;
         this.appPool[key + "(expTime)"] = DateTime.MaxValue; // 这里设置一个最大时间值,直到Application结束。
         this.appPool.UnLock();
       }
       catch
       {
         return false;
       }
       return true;
     }
     /// <summary>
     /// 添加缓存
     /// </summary>
     /// <param name="key">缓存名称</param>
     /// <param name="value">缓存值</param>
     /// <param name="expireTime">有效时间</param>
     /// <returns></returns>
     public bool Add(string key, object value, DateTime expireTime)
     {
       try
       {
         this.appPool.Lock();
         this.appPool[key] = value;
         this.appPool[key + "(expTime)"] = expireTime;
         this.appPool.UnLock();
       }
       catch
       {
         return false;
       }
       return true;
     }
     /// <summary>
     /// 获取缓存
     /// </summary>
     /// <param name="key">缓存名称</param>
     /// <returns></returns>
     public object Get(string key)
     {
       object o = this.appPool.Get(key + "(expTime)");
       if (o != null)
       {
         TimeSpan ts = (TimeSpan)(DateTime.Now - (DateTime)o);
         if (ts.TotalSeconds < 0)
         {
           return this.appPool.Get(key);
         }
         else
         {
           this.Delete(key);
           return null;
         }

使用APPLICATION制作缓存,转存一下,有一段写的还可以。的更多相关文章

  1. 不要在Application中缓存数据

    在你的App中的很多地方都需要使用到数据信息,它可能是一个session token,一次费时计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储.   有人建 ...

  2. IM群聊消息究竟是存1份(即扩散读)还是存多份(即扩散写)?

    1.前言 IM的群聊消息,究竟存1份(即扩散读方式)还是存多份(即扩散写方式)? 上一篇文章<IM群聊消息的已读回执功能该怎么实现?>是说,“很容易想到,是存一份”,被网友们骂了,大家争论 ...

  3. HTML5之应用缓存---manifest---缓存使用----Web前端manifest缓存

    相信来查这一类问题的都是遇到问题或者是初学者吧! 没关系相信你认真看过之后就会知道明白的 这是HTML5新加的特性 HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连 ...

  4. HTML5之应用缓存---manifest---缓存使用----HTML5的manifest缓存

    相信来查这一类问题的都是遇到问题或者是初学者吧! 没关系相信你认真看过之后就会知道明白的 这是HTML5新加的特性 HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连 ...

  5. 安国AU6989主控 + K9GBG08U0A(NAND) 制作4GB闪存驱动器

    文档标识符:AU6989_FLASH-DRIVE_D-P8 作者:DLHC 最后修改日期:2020.8.22 本文链接: https://www.cnblogs.com/DLHC-TECH/p/AU6 ...

  6. 瑞发科NS1081主控 + THGBM5G7A2JBAIR(eMMC) 制作16GB闪存驱动器

    文档标识符:NS1081_FLASH-DRIVE_D-P9 作者:DLHC 最后修改日期:2020.8.22 本文链接:https://www.cnblogs.com/DLHC-TECH/p/NS10 ...

  7. FatJar—Java Application制作jar包

    Fat Jar功能非常强大,先下载吧. 下载地址:sourceforge.net/projects/fjep/files/ http://files.cnblogs.com/files/nidongd ...

  8. php静态缓存简单制作

    制作缓存的目的是为了让我们的页面运行更加快速,减少读取数据库内容的次数,给用户更好的体验,为此我们可以使自己的程序做一下缓存,并且设置一个缓存过期的时间,来保证与数据库的一致,当然并不是所有的程序都适 ...

  9. 不要在Android的Application对象中缓存数据!

    前言   在你的App中的很多地方都需要使用到数据信息,它可能是一个session token,一次费时计算的结果等等,通常为了避免Activity之间传递数据的开销,会将这些数据通过持久化来存储. ...

随机推荐

  1. RHEL7磁盘分区挂载和格式化

    安装大数据平台,每台机器需要挂载10个磁盘,用JBOD模式,操作系统为RHEL7.2. 写了两个脚本,format_disk.sh和mount_disk.sh实现磁盘自动分区格式化以及挂载,修改fst ...

  2. 南京Uber优步司机奖励政策(2月1日~2月7日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 内容提供者(Content Provider)——跨程序共享数据

    内容提供者 Content Provider 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方 ...

  4. PAT 1014. Waiting in Line

    Suppose a bank has N windows open for service.  There is a yellow line in front of the windows which ...

  5. 【学习】ABAP OLE 对EXCEL的处理

    原文:http://blog.sina.com.cn/s/blog_7229b9c00100opx2.html -------------------------------------------- ...

  6. use SWF / Flash in cocos2d-x; cocos2d(cocos2d-x) 直接播放flash / SWF文件

    前段时间移植一个页游到手游,原先页游的项目里面有1000+的Flash人物,宠物动画,特效. 这要是全部重新做一遍,还不累死人?所以就想干脆直接在Cocos2d(x)里面播放SWF文件.(包括场景,过 ...

  7. Android开发具体解释之ListView具体解释一

    列表ListView介绍和实例  1.ListView  -- ListActivity -- ListAdapter  2.ArrayAdapter结合ListView进行显示  3.SimpleA ...

  8. abap中的弹出窗体函数

    POPUP_TO_CONFIRM_WITH_MESSAGE     会话框确实处理步骤; 用识别正文POPUP_TO_SELECT_MONTH             日历:弹出 POPUP_TO_C ...

  9. linux IO 内核参数调优 之 原理和参数介绍

    1.  page cache linux操作系统默认情况下写都是有写缓存的,可以使用direct IO方式绕过操作系统的写缓存.当你写一串数据时,系统会开辟一块内存区域缓存这些数据,这块区域就是我们常 ...

  10. CSS hack常用方案(摘选)

    邮箱因为默认了line-height?:170%,导致采用table元素时继承问题,可以采用line-height:50% 很好解决. 常 在使用float时,后面的显示不正常,因为继承了float了 ...