此处主要总结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. 阿凡题UWP的源码公开

    高考结束了!这现在就是一款我不会用的app了...所以我以后很少能去维护它了 所以现在决定公开它的源码吧 代码写的相当烂,是自己中早期的一个作品了 里面还有一些自己没填完的坑以及挖到一半的坑.... ...

  2. [解读REST] 6.REST的应用经验以及教训

    衔接上文[解读REST] 5.Web的需求 & 推导REST,上文根据Web的需求推导出了REST架构风格,以及REST的详细描述和解释.自从1994年以来,REST架构风格被用于指导Web架 ...

  3. python学习之第一课时--初始python

    Python前世今世 python是什么 python是一门多种用途的编程语言,时常在扮演脚本语言的角色 python流行原因 软件质量 提高开发者效率(python代码大小为C/java的1/3-1 ...

  4. JSP中的九大隐式对象及四个作用域

    在这篇博文中,我们将讨论和学习JSP中的隐式对象及四个作用域. 一.九大隐式对象 这些对象是JSP容器为每个页面中的开发人员提供的Java对象,开发人员可以直接调用它们而不用显式地声明它们再调用. J ...

  5. Loadrunner Webservice接口性能测试脚本编写优化总结

    本文主要介绍使用Loadrunner Webservice接口性能测试脚本编写及优化总结. 1.Webservice协议脚本编写流程 下面介绍使用Loadrunner 11调用Webservice接口 ...

  6. tar split cat 创建、合并分卷压缩包

    最近用微盘传文件遇到的问题,超过100M不能一次传啊,想想win下有rar和zip创建分卷压缩包很简单,就像linux的tar打包器应该也可以吧,搜了下,要和split配合完成 具体命令如下:对文件: ...

  7. MySQL技术内幕汇总

    MySql技术内幕之MySQL入门(1) MySql技术内幕之MySQL入门(1) 检查系统中是否已经安装了MySQL sudo netstat -tap | grep mysql 若没有显示已安装结 ...

  8. JS的基本类型(小知识)

    一:js中的基本类型: 基本类型:boolen, string ,number,null,undefined 引用类型:object,和函数 二.undedifned和null的区别: 1 undef ...

  9. JAVA基础知识总结:二

    一.数据类型 1.常量 在程序运行的过程中,值不会发生改变的标识符 常量的分类:整数常量.小数常量.布尔值常量.字符常量.字符串常量.null常量 2.变量 表示的值可以发生改变 定义一个变量,需要在 ...

  10. MongoDB理解

    1. 什么是MongoDB (1)MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. (2)MongoDB 是一个 ...