ASP.NET提供了在一个ASP.NET应用程序基本上缓存信息的编程功能。该功能和Application对象相似,但它具有在ASP.NET应用程序的生命周期内动态维护缓存信息的能力。在应用程序中缓存数据可以极大地提高性能,因为数据对于服务器是本地的,能够被快速检索。而不必重新查询最初的数据源。特别现在的系统一般最大的瓶颈是在数据库,合理利用缓存可以减少很多没有必要的数据库访问,从而优化系统的性能。

Cache对象提高了实现基于相关性的到期和回调通知的能力,回调通知允许在管理应用程序的其他用户或ASP.NET本身对缓存中缓存项的操作。使用Cache对象能够存储任何类型(值类型或应用类型),然后再更新或删除它们。Cache是比Application对象更灵活的一个对象。它支持:

1、基于相关性的过期和删除——Cache对象提供了把缓存值的自动过期和删除绑定到一个文件事件、一个具体的或者相对的日期/时间或另一缓存键的能力。

2、自动的锁定管理——Cache对象包括内部锁定管理,为原子更新(可以放在一个计算操作中的更新)提供同步。

3、回调机制——Cache对象提供了设置回调函数在删除缓存项被调用的能力。

Cache的添加方法有Add()或Insert(),Insert方法可以使用可选参数,既使用默认参数来实现缓存的添加:

Cache.Add(KeyName, KeyValue,Dependencies,AbsoluteExpiration,SlidingExpiration,Priority,CacheItemRemoveCallback);

参数分别为:缓存名,缓存的对象,依赖项,绝对过期时间,相对过期时间,优先级,缓存过期引发的事件。

缓存依赖项:文件依赖,其他缓存依赖,数据库依赖和过期时间方法来设置,当依赖项发生改变时,缓存会失效,并可以引发一定事件。

1、文件依赖:缓存依赖xml文件:

显示行号 复制代码 ?
  1. DataSet dsProducts = new DataSet();
    //...dsProducts数y据Y
    CacheDependency fileDepends = new CacheDependency(Server.MapPath("Northwind.xml"));
    Cache.Insert("dsProducts", dsProducts, fileDepends);
      2、其他缓存项依赖:
  1. object cacheData;
    string[] fileDependsArray = { Server.MapPath("Northwind.xml") };
    string[] cacheDependsArray = { "Depend0", "Depend1", "Depend2" };
    CacheDependency cacheDepends = new CacheDependency(fileDependsArray, cacheDependsArray);
    Cache.Insert("cacheName", cacheData, cacheDepends);

3、过期时间设置:

AbsoluteExpiration可以设置缓存的绝对过期的时间,如设置30分钟后过期:

  1. Cache.Insert("cacheName ", "cacheValue", null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);

NoSlidingExpiration可以设置相对的过期时间,如果缓存在NoSlidingExpiration设定的时间内没有被访问,缓存过期一定时间内没有被访问,缓存过期,如果在一定时间内都有访问,缓存将不会过期。如在30分钟有访问Cache就不过期:

  1. Cache.Insert("cacheName", "cacheValue", null, Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(30));

ASP.NET 缓存(Cache)的更多相关文章

  1. ASP.NET缓存 Cache

    缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多 ...

  2. asp.net,缓存Cache

    缓存Cache: >直接使用Cache["content"],缓存与Session不同,所有用户都可以共享.永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉. & ...

  3. ASP.NET缓存 Cache之数据缓存

    添加 Cache[Key]=object  or Cache.Insert 移除 Cache.Remove(key) 1.将值直接写入Cache 代码如下 复制代码 HttpContext.Curre ...

  4. ASP.NET状缓存Cache的应用-提高数据库读取速度

    原文:ASP.NET状缓存Cache的应用-提高数据库读取速度 一. Cache概述       既然缓存中的数据其实是来自数据库的,那么缓存中的数据如何和数据库进行同步呢?一般来说,缓存中应该存放改 ...

  5. ASP.NET缓存中Cache过期的三种策略

    原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID=&quo ...

  6. ASP.NET -- WebForm -- 缓存Cache的使用

    ASP.NET -- WebForm --  缓存Cache的使用 把数据从数据库或文件中读取出来,放在内存中,后面的用户直接从内存中取数据,速度快.适用于经常被查询.但不经常变动的数据. 1. Te ...

  7. [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能

    [.net 面向对象程序设计进阶] (15) 缓存(Cache)(二) 利用缓存提升程序性能 本节导读: 上节说了缓存是以空间来换取时间的技术,介绍了客户端缓存和两种常用服务器缓布,本节主要介绍一种. ...

  8. 缓存Cache

    转载自  博客futan 这篇文章将全面介绍有关 缓存 ( 互动百科 | 维基百科 )cache以及利用PHP写缓存caching的技术. 什么是缓存Cache? 为什么人们要使用它? 缓存 Cach ...

  9. ASP.NET 缓存技术分析

    缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...

随机推荐

  1. 洛谷—— P3811 【模板】乘法逆元

    https://www.luogu.org/problem/show?pid=3811 题目背景 这是一道模板题 题目描述 给定n,p求1~n中所有整数在模p意义下的乘法逆元. 输入输出格式 输入格式 ...

  2. [bzoj1833][ZJOI2010]数字计数(数位DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...

  3. java中POJO类和DTO类都要实现序列化

    java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 java中POJO类和DTO类都要实现序列化 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序 ...

  4. BP神经网络及其在教学质量评价中 的应用

    本文学习笔记是自己的理解,如有错误的地方,请大家指正批评.共同进步.谢谢! 之前的教学质量评价,仅仅是通过对教学指标的简单处理.如求平均值或人为的给出各指标的权值来加权求和,其评价结果带有非常大主观性 ...

  5. php apc缓存以及与redis的对比

    apc缓存用户数据这个会用, apc_store() 和apc_fetch()函数. 那apc 缓存php 代码,这个怎么用呢? 原文: http://blog.csdn.net/w187046226 ...

  6. C 基础 全局变量

    /** 被static修饰的局部变量 1.只有一份内存, 只会初始化一次 2.生命周期会持续到程序结束 3.static改变了局部变量的生命周期, 但是不能改变局部变量的作用域 被static修饰的全 ...

  7. cgi程序读取post发送的特殊字符,尤其适合于微信公众平台开发中发送被动消息

    [问题]用c编写cgi程序怎样取出html表单post来的数据? [分析]html表单post来的数据形如username="zhang"&&password=&q ...

  8. HDFS02

    读取流程 写流程 ============SecondaryNameNode============ Namenode的一个快照 周期性的备份namenode 记录namenode中的metadata ...

  9. Dictionary<string, string>是一个泛型使用说明

    Dictionary<string, string>是一个泛型使用说明 Posted on 2010-08-05 15:03 moss_tan_jun 阅读(2273) 评论(0) 编辑  ...

  10. WebView播放H5课件时,锁屏解锁后,页面重新绘制的问题

    难题描述:H5页面播放 ,锁屏,解锁后,重新加载了页面,三星不会出现(onpause onstop ,onresume),但在小米.魅族会调用 onpause onstop ondestroy,onr ...