System.Web.Caching.Cache

此类是利用缓存来保存信息的。可以把一些稳定的数据,不会随用户而改变的信息利用Cache保存起来,可以优化网站的速度。

Cache和Session,cookie的区别

Session保存在服务器上,每个用户都有自己的Session,不会冲突,关闭网站后该Session丢失。

Cookie是保存在客户端的,如果不清除流浪器的cookie或者不设置过期时间,cookie都不会丢失。

Cache是分配在服务器上的一个公共的内存片。从Cache中读取数据比较快,有些网站就把一些经常被使用的数据放到Cache里,提高访问速度,优化系统性能。

这里主要介绍Cache里面的三个方法。Insert(),GeT(),Remove()   就是 添加,获取,删除

Insert有重载

 

         //Page.Cache和HttpContext.Current.Cache 和一般处理程序 context.Cache  是不一样的,你用什么存的就要什么取
        //insert和get的过程如果装箱和拆箱一样
        protected override void OnInit(EventArgs e)
        {
            //添加缓存,
            //你就把参数看做为键值对的形式,只是说键的类型确定了(可以重复,下次还可以设置此键),值可以是任何类型
            Page.Cache.Insert("One", "666");  //只要保存了,在后面的页面都可以获取
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            string aa = "";
            if (Page.Cache.Get("One") != null)  //使用前最后判断一下,以免项目报错
            {
                aa =(string)Page.Cache.Get("One"); //获取的时需要转型
            }
            Response.Write(aa + "<br />");
            if (Page.Cache.Get("Ywo") == null) //没有此key就是空
            {
                Response.Write("无此值<br />");
            }
        }

此方法是可以监视一个文件,如果监视的文件发生了改变,此Cache就清除了。

例如:

①新建一个XML格式的文件用来保存信息,然后做如下准备工作

新建一个类来做对比

利用代码生成xml文件,运行一次就注释了,换成下面的就可以了

    protected override void OnInit(EventArgs e)
        {
            TestClass xiaoming = new TestClass() { ID = 1, Age = 18, Name = "小明" };
            XmlSerializer xml = new XmlSerializer(xiaoming.GetType());
            string path = Server.MapPath("~/xm.xml");
            using (Stream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
            {
                xml.Serialize(stream, xiaoming);
            }
            CacheDependency cdd = new CacheDependency(path);
            HttpContext.Current.Cache.Insert("xm", xiaoming, cdd);          //这段代码运行一遍就可以删除了,代码换成下面的    }
 protected override void OnInit(EventArgs e)
        {//读取
             XmlSerializer xml = new XmlSerializer(typeof(TestClass));
            TestClass xiaoming = new TestClass();
            string path = Server.MapPath("~/xm.xml");
            using (Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                xiaoming = (TestClass)xml.Deserialize(stream);
            }
            CacheDependency cdd = new CacheDependency(path);
            HttpContext.Current.Cache.Insert("xm", xiaoming, cdd);

        }

然后生成xml文件如下

我们页面结构

按钮就是修改我们的XML文件,点击按钮了,我们之前保存的Cache也就被清除了

        public void ProcessRequest(HttpContext context)
        {            //此一般处理处理程序用来做显示效果
            context.Response.ContentType = "text/plain";
            TestClass xm = null;
            if (context.Cache.Get("xm") != null)
            {
                xm =HttpContext.Current.Cache.Get("xm") as TestClass;
            }
            MemoryStream ms = new MemoryStream();
            XmlWriter xw = new XmlTextWriter(ms, null);
            xw.WriteStartDocument();
            xw.WriteStartElement("xm");
            xw.WriteElementString("ID", xm.ID.ToString());
            xw.WriteElementString("Name", xm.Name);
            xw.WriteElementString("Age", xm.Age.ToString());
            xw.WriteEndElement();

            xw.Flush();
            ms.Flush();
            // 将流转换成String并返回
            byte[] data = new byte[ms.Length];
            ms.Seek(0, SeekOrigin.Begin);
            ms.Read(data, 0, data.Length);
            ms.Close();
            string aa = UTF8Encoding.UTF8.GetString(data);
            context.Response.ContentType = "text/xml";
            context.Response.Write(aa);

        }

②打开我们的页面

原理是:一打开我们的页面,我们就把xm.xml里面的信息转成类保存在cache里面,我们点击A标签就会查看到效果,然后我们点击按钮(目的就是改变xm.xml文件),然后在点击A标签就会报错

效果如下:

然后点击按钮,再查看a标签就会报错,证明我们的Cache被清除了。

Cahe里面有两个字段,返回的就是DateTime

例如:两种形式

这个方法手动设置Cache过期

注:Add()和Insert()的区别

Add()和Insert()都可以表示添加一个缓冲,Add()设置了key的值就不能改变了,如同常量一般。而Insert()可以改变key的值。所以一般建议使用Insert()方法

时间: 2024-10-10 13:29:47

System.Web.Caching.Cache的相关文章

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

System.Web.Caching.Cache类 缓存 各种缓存依赖 Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比. EffectivePrivateBytesLimit 获取可用

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

Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物理内存百分比. EffectivePrivateBytesLimit 获取可用于缓存的字节数. Item 获取或设置指定键处的缓存项. 二.方法 方法

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

转自:http://www.cnblogs.com/kissdodog/archive/2013/05/07/3064895.html Cache类,是一个用于缓存常用信息的类.HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例.尽量使用前者. 一.属性 属性 说明 Count 获取存储在缓存中的项数. EffectivePercentagePhysicalMemoryLimit 获取在 ASP.NET 开始从缓存中移除项之前应用程序可使用的物

深入System.Web.Caching命名空间 教你Hold住缓存管理(一)

本文分三篇,从缓存所在命名空间System.Web.Caching开始,详细的介绍.NET框架提供的缓存类和操作方法.看完之后你将学会: 第一篇-如何实现简单的数据缓存 第二篇-缓存从文件中读取的数据,并通过文件依赖实现缓存数据的及时更新 第三篇-缓存数据库中的整张表,并通过数据库依赖实现缓存数据的及时更新 一,System .Web.Caching与缓存工作机制简介 System.Web.Caching是用来管理缓存的命名空间,其父级空间是System.Web,由此可见,缓存通常用于Web网站

System.Web.Caching

System.Web.Caching 本文转载自 宋辉 缓存主要是为了提高数据的读取速度.因为服务器和应用客户端之间存在着流量的瓶颈,所以读取大容量数据时,使用缓存来直接为客户端服务,可以减少客户端与服务器端的数据交互,从而大大提高程序的性能. 本章从缓存所在的命名空间“System.Web.Caching”开始,详细介绍框架提供的缓存类和操作方法,主要涉及简单数据的缓存.数据缓存依赖和数据库缓存依赖三个技术要点,最后演示一个完全使用缓存实现数据读取的实例. 16.1  System.Web.C

关于System.Web.Caching的“未将对象引用设置到对象的实例”错误

初接触Asp.Net不久,想在后端做个缓存机制,于是使用了System.Web.Caching的Cache类. 使用部分的逻辑很简单,但是取值时总报错 private static Cache cache = new Cache(); public static string LoadCache(string Key)        {            if (cache[Key] == null)//这一步报错            {                return nul

深入System.Web.Caching命名空间 教你Hold住缓存管理(二)

本文分三篇,从缓存所在命名空间System.Web.Caching开始,详细的介绍.NET框架提供的缓存类和操作方法.看完之后你将学会: 第一篇-如何实现简单的数据缓存 第二篇-缓存从文件中读取的数据,并通过文件依赖实现缓存数据的及时更新 第三篇-缓存数据库中的整张表,并通过数据库依赖实现缓存数据的及时更新 在学习了第一篇Cache类的用法后,下面我们来继续看看如果缓存从文件中读取的的数据,并通过缓存依赖类CacheDependency实现缓存数据的及时更新. 一,缓存依赖类CacheDepen

HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching

先看MSDN上的解释:      HttpContext.Current.Cache:为当前 HTTP 请求获取Cache对象.      HttpRuntime.Cache:获取当前应用程序的Cache.       我们再用.NET Reflector工具看看HttpContext.Cache和HttpRuntime.Cache的实现: HttpContext.Cache和HttpRuntime.Cache实现    //System.Web.HttpContext.Cache属性实现   

System.Web.Cache缓存的封装和调用示例

目录 HttpCache类 Objects类 调用示例 HttpCache类 /// <summary> /// System.Web.Cache缓存的封装 /// </summary> public static class HttpCache { /// <summary> /// 当前应用程序的的缓存实例 /// </summary> public static System.Web.Caching.Cache Current { get { retu