此处主要总结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. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  2. Android 屏幕相关概念(1)

    1.  术语和概念 术语 说明 备注  Screen size(屏幕尺寸)  指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸  摩托罗拉milestone手机是3. ...

  3. Python实现采集wordpress整站数据的爬虫

    最近爱上了python,就非常喜欢使用python来练手,在上次的基础上完善一下代码,实现采集wordpress程序的网站的整站数据的爬虫程序,本站也是采用的wordpress,我就拿吾八哥网(htt ...

  4. VS中Release模式下生成去掉生成pdb文件

    1.右键项目,选择属性 2.选择正确的配置,点击高级 3.调试信息选择 none,点击确定.

  5. UVa11212,Editing a Book

    正如书上所说,本题需要用IDA*算法求解 启发函数是3d+h>3maxd(d为当前操作步骤数,h为当前逆序对数,maxd为当前枚举的最大步骤数) 可见迭代递归的核心思想是枚举ans去dfs是否可 ...

  6. 关于keyTyped

    蠢了,重写keyTyped方法时候拿keyCode去做比较....记一下....VK_UNDEFiEND.......

  7. 如何把项目上传到GitHub上

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...

  8. LeetCode 75. Sort Colors(排序颜色)

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  9. JDBC(三)数据库连接池(DBCP、C3P0)

    前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...

  10. virualbox 搭建 otter

    前言 为了学习otter,上一篇我们讲到了 otter 必要软件的安装,参考:virualbox 安装 otter 必备软件,现在安装otter,相比官方文档,我们尽量简化安装步骤. virualbo ...