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. 用信号量及其PV操作处理实际问题

    43.现有3个生产者P1.P2.P3,他们都要生产橘子汁,每个生产者都已分别购得两种不同的原料,待购齐第三种原料后就可配制成橘子汁装瓶出售.有一供应商能源源不断的供应糖.水.橘子精,但每次只拿出一种原 ...

  2. Ubuntu 16.04安装设备管理器Hardinfo和lshw设备信息命令

    安装: sudo apt-get install hardinfo 启动: 实际上这些信息都可以通过lshw进行查看,参考:https://linux.die.net/man/1/lshw

  3. Ubuntu 16.04禁用来宾账号(Guest User)

    1.打开50-ubuntu.conf sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 2.在最后加入 allow-guest=fal ...

  4. 基于Linux下的UDP编程

    一. Linux下UDP编程框架 使用UDP进行程序设计可以分为客户端和服务器端两部分. 1.服务器端程序包括: Ø  建立套接字 Ø  将套接字地址结构进行绑定 Ø  读写数据 Ø  关闭套接字 2 ...

  5. [C++] 自己主动关闭右下角弹窗

    近期腾讯.迅雷等各种client,都越发喜欢在屏幕的右下角弹框了. 有骨气的人当然能够把这些软件卸载了事,可是这些client在某些情况下却又还是实用的.怎么办呢? 作为码农,自己实现一个自己主动关闭 ...

  6. Android 四大组件学习之Activity六

    本节学习Activity的状态保存与恢复. 先用样例開始: 布局文件主要是实现例如以下.大家自行编写 Activity逻辑代码: public class FiveActivity extends A ...

  7. JS执行环境栈及事件循环机制—简洁明了的讲解

    JavaScript解释器在浏览器中是单线程的,这意味着浏览器在同一时间内只执行一个事件,对于其他的事件我们把它们排队在一个称为 执行栈(调用栈) 的地方.下表是一个单线程栈的抽象视图: 我们已经知道 ...

  8. smart pointer

    smart pointer是一种abstract data type,它可以模仿指针的行为,而且额外提供了一系列诸如自己主动内存管理.边界检查等特性,这些特性是为了在保证效率的基础上降低因为对指针的不 ...

  9. LeetCode 160. Intersection of Two Linked Lists (两个链表的交点)

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  10. nyoj27水池数目 (DFS)

    题目27 题目信息 执行结果 本题排行 pid=27" style="text-decoration:none; color:rgb(55,119,188)">讨论 ...