此处主要总结System.Web.Caching.Cache类 该类是用于存储常用信息的类,HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。
该类的成员如下:
1、属性

属性 说明
Count 获取存储在缓存中的项数。
EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比。
EffectivePrivateBytesLimit 获取可用于缓存的字节数。
Item 获取或设置指定键处的缓存项。
2、方法
方法名称 说明
Add 将指定项添加到 Cache 对象,该对象具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。
Get 从 Cache 对象检索指定项。
GetEnumerator 检索用于循环访问包含在缓存中的键设置及其值的字典枚举数。
Insert(String, Object) 向 Cache 对象插入项,该项带有一个缓存键引用其位置,并使用 CacheItemPriority 枚举提供的默认值。
Insert(String, Object, CacheDependency) 向 Cache 中插入具有文件依赖项或键依赖项的对象。
Insert(String, Object, CacheDependency, DateTime, TimeSpan) 向 Cache 中插入具有依赖项和到期策略的对象。
Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback) 将对象与依赖项、到期策略以及可用于在从缓存中移除项之前通知应用程序的委托一起插入到 Cache 对象中。
Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback) 向 Cache 对象中插入对象,后者具有依赖项、到期和优先级策略以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)。
Remove 从应用程序的 Cache 对象移除指定项。
3、静态字段
名称 说明
NoAbsoluteExpiration  用于 Insert 方法调用中的 absoluteExpiration 参数中以指示项从不到期。 此字段为只读。
NoSlidingExpiration 用作 Insert 或 Add 方法调用中的 slidingExpiration 参数,以禁用可调到期。 此字段为只读。
4、应用举例
   1、基本
   namespace WebApplication1
  {
    public
partial class _Default : System.Web.UI.Page
    {
        protected void
Page_Load(object sender, EventArgs e)
        {
            Person p = new
Person();
            p.Id = 1;
            p.Name = "诸葛亮";
            Cache cache =
HttpRuntime.Cache;
            cache.Insert("AA",p);
           
cache.Insert("BB","字符串");
           
           
Response.Write(cache.Get("BB").ToString());     //输出 字符串
            Person
p2 = cache["AA"] as Person;
            Response.Write(p2.Id + " : " +
p2.Name);        //输出 1 : 诸葛亮
           
Response.Write(cache.EffectivePrivateBytesLimit);   //-1
这是一个只读属性,那就没什么好说了,只能输出来看看了,但是-1是什么意思呢?无限吗
           
Response.Write(cache.EffectivePercentagePhysicalMemoryLimit);   //98   
开始移除项之前可以使用到98%
            Response.Write(cache.Count);        //输出
3
            Response.Write(cache["BB"]);        //输出 字符串 支持索引器式的读取
            cache.Remove("BB");       
//从cache中移除一项
            Response.Write("~~~" + cache["BB"] + "~~~");   
//移除了输出 null,但程序不报错
            foreach (var obj in cache)
           
{
                Response.Write(obj.GetType() + "<br/>");   
//输出不知道什么鸟东西
            }
        }
    }
    public class Person
    {
        public int
Id
        {
            get;
            set;
        }
        public string Name
        {
           
get;
            set;
        }
    }
    }
  2、文件缓存依赖
     当被依赖的文件更改时,缓存会立即被清空:
     index.aspx.cs代码:
     public partial class _Default : System.Web.UI.Page
    
{
        protected void Page_Load(object sender, EventArgs e)
       
{
            Cache cache = HttpContext.Current.Cache;
           
//文件缓存依赖
            cache.Insert("CC", "依赖项测试", new
CacheDependency(@"D:\123.txt"));
           
//这时候在about.aspx页面添加一行代码,当更改一下D:123.txt时,cache["cc"]会立即被清空
        }
    
}
     about.aspx.cs代码:
     public partial class About : System.Web.UI.Page
    
{
        protected void Page_Load(object sender, EventArgs e)
       
{
            //直接打开本页面,输出缓存依赖项测试
           
//当更改D:\123.txt之后,在刷新,输出空,表明该Cache是依赖于D:\123.txt的
           
Response.Write(HttpContext.Current.Cache["CC"]);
        }
     }
   3、NoSlidingExpiration  绝对过期时间,当超过设定时间,立即移除。
    
下面来看下绝对过期时间的示例,index.aspx.cs:
     public partial class _Default : System.Web.UI.Page
    
{
        protected void Page_Load(object sender, EventArgs e)
       
{
            Cache cache = HttpContext.Current.Cache;
           
//5秒后就到期,立即移除,没商量
            cache.Insert("DD", "绝对过期测试", null,
DateTime.Now.AddSeconds(5),
System.Web.Caching.Cache.NoSlidingExpiration);
        }
     }
     about.aspx.cs:
     public partial class About : System.Web.UI.Page
    
{
        protected void Page_Load(object sender, EventArgs e)
       
{
            //先打开index.aspx添加到缓存 然后立即打开本页面,输出 绝对过期测试
           
//持续刷新5秒后,不会再输出  绝对过期测试
           
Response.Write(HttpContext.Current.Cache["DD"]);
        }
     }
     4、NoAbsoluteExpiration 
当超过设定时间没再使用时,才移除缓存
      
滑动过期测试,index.aspx.cs:
       public partial class _Default :
System.Web.UI.Page
      {
        protected void Page_Load(object sender,
EventArgs e)
        {
            Cache cache =
HttpContext.Current.Cache;
            //弹性过期时间,当缓存没使用10秒就过期
           
cache.Insert("DD", "滑动过期测试", null,
System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromSeconds(10));
       
}
     }
    about.aspx.cs:
    public partial class About : System.Web.UI.Page
   
{
        protected void Page_Load(object sender, EventArgs e)
       
{
            //直接打开本页面,输出弹性过期测试
           
//如果一直不停地刷新,都会继续输出,但是当超过10秒后再刷新,不会再输出   滑动缓存测试
           
Response.Write(HttpContext.Current.Cache["DD"]);
        }
    }
    注意   当设置绝对到期时间时,请使用
DateTime 结构。当设置弹性过期时间时,请使用 TimeSpan 结构。另外,如果您创建的弹性过期时间小于零或大于一年,则将引发
ArgumentOutOfRangeException 类。

Cache类缓存的更多相关文章

  1. System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.C ...

  2. System.Web.Caching.Cache类 缓存 各种缓存依赖(转)

    转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime ...

  3. C# System.Web.Caching.Cache类 缓存 各种缓存依赖

    原文:https://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntim ...

  4. System.Web.Caching.Cache类 缓存

    1.文件缓存依赖 public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender ...

  5. System.Web.Caching.Cache类 Asp.Net缓存 各种缓存依赖

    Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的 ...

  6. android NDK 实用学习(四)-类缓存

    1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ h ...

  7. ASP.NET Cache 类

    在查找资料的过程中.原来园子里面已经有过分析了.nopCommerce架构分析系列(二)数据Cache. 接下来是一些学习补充. 1.Nop中没有System.Web.Caching.Cache的实现 ...

  8. Guava Cache 本地缓存组件浅析

    cache组件中核心的类和接口列举如下: 接口: Cache 本地缓存的顶级接口,提供一些对缓存进行get,put的方法,以及获取缓存统计数据的方法等. LoadingCache 继承了Cache接口 ...

  9. Mybatis源码分析之Cache二级缓存原理 (五)

    一:Cache类的介绍 讲解缓存之前我们需要先了解一下Cache接口以及实现MyBatis定义了一个org.apache.ibatis.cache.Cache接口作为其Cache提供者的SPI(Ser ...

随机推荐

  1. IBatis.Net 老技术新研究

    我们现在用的数据访问组件封装了IBatis.Net框架,提供了标准的数据访问接口和服务.正好总结一下老技术IBatis.Net在进行实际的数据访问开发之前,我们先了解一下:IBatis.Net中几个重 ...

  2. javascript中关于this指向问题详解

      前  言 LiuDaP 在前端的学习中,我们必然要用到js,js可以说是前端必不可少的的东西.在学习js的过程中,我们会经常用到this这个东西,而this的指向问题就变得尤为重要.今天正好有空闲 ...

  3. 人工智能 tensorflow框架-->简介及安装01

    简介:Tensorflow是google于2015年11月开源的第二代机器学习框架. Tensorflow名字理解:图形边中流动的数据叫张量(Tensor),因此叫Tensorflow 既 张量流动 ...

  4. Android基础知识笔记01—框架结构与四大组件

    -----------Andriod 01--------------->>> Andriod系统架构    linux内核与驱动层. 系统运行库层. 应用框架层. 应用层 内核驱动 ...

  5. Thrift - 快速入门

    简单实例 有homebrew的话,直接执行以下命令即可,brew会处理相关依赖(https://thrift.apache.org/docs/install/). brew install thrif ...

  6. DOS和windows的区别?

    2017-09-25  19:18:03 本质:都是微软公司的操作系统,某种从程度上说windows是dos的后续操作系统版本.只是windows相比dos有质的飞跃.dos只支持命令操作,windo ...

  7. [Python] 文科生零基础学编程系列三——数据运算符的基本类别

    上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...

  8. 优先队列(存储结构数组)--Java实现

    /*优先队列--是对队列的一种改进 *要存储的数据存在优先级--数值小的优先级高--在队头 *优先队列的实现 *1.数组:适合数据量小的情况(没有用rear+front实现) *优先队列头在items ...

  9. 微软Tech Summit 2017,等你来打Call

    2017年10月31至11月3日,由微软举办的Tech Summit 2017技术暨生态大会将在北京盛大举办,要在北京连开四天.今年的技术大会看头十足,不仅有大咖级人物带来十二大主题课程,更有三天四场 ...

  10. Ubuntu16.04卸载opencv2.4.9并安装opencv3.2.0+contrib

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 需要用到opencv中的surf和sift算法,机器上只有opencv3.2,没有扩展包,于是 ...