此处主要总结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. 数据迁移过程中hive sql调优

    本文记录的是,在数据处理过程中,遇到了一个sql执行很慢,对一些大型的hive表还会出现OOM,一步一步通过参数的设置和sql优化,将其调优的过程. 先上sql ) t where t.num =1) ...

  2. Ubuntu配置OpenStack 一:主机环境配置以及问题总结

    本文包含openstack配置的实验环境的基本步骤.在下面的步骤中将逐步讲解如何操作. 1.准备三台虚拟机 主机名字分别命名为controller.network.computer[desktop版或 ...

  3. JS中replace()用法举例

    语法: string.replace(regexp,replacement) 参数: regexp:声明了要替换的模式的RegExp对象.如果该参数是一个字符串,则将它作为要检索的直接量文本模式,而不 ...

  4. 转:C++输入一行字符串的一点小结

    原文链接: http://www.wutianqi.com/?p=1181 大家在学习C++编程时,一般在输入方面都是使用的cin.而cin是使用空白(空格,制表符和换行符)来定字符串的界的.这就导致 ...

  5. laravel框架包资源分享

    最近发现laravel框架包很难下,楼楼之前下了两个版本,分享一下,希望对大家有所帮助.laravel-v5.2.15 链接: https://pan.baidu.com/s/1qYyhbFe 密码: ...

  6. JAVA判断文件的内容类型

    Java 7 新的特性,判断文件的内容类型. Program to demonstrate Java 7 new feature : Determining the file content type ...

  7. 虚拟专用网VPN

    1. 三个专用地址块: (1)10.0.0.0到10.255.255.255 (2)172.16.0.0到172.31.255.255 (3)192.168.0.0到192.168.255.255 2 ...

  8. IntelliJ IDEA创建多模块依赖项目

    刚从Eclipse转IDEA, 所以记录一下IDEA的使用 创建多模块依赖项目 1. 新建父工程 这样就创建好了一个普通项目,一般我们会把src删掉,在此项目下新建新的模块 2. 新建子模块 创建供前 ...

  9. javascript高性能写法

    看到一篇不错的博文,如果想写出比较高性能的代码,可参看这个链接http://developer.51cto.com/art/200906/131335.htm

  10. 如何用java创建一个jdbc程序

    第一个jdbc程序 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和 ...