zoukankan      html  css  js  c++  java
  • .NET中Cache的使用

    Cache 即高速缓存 ,我想很多人对他的第一印象一定像我一样,感觉他一定能提高系统得性能和运行速度。的确。Net推出cache的初衷确实是这样的。那么cache是如何 提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作 总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。

     

    1. Cache 是如何工作的。

     

    l Cache 是分配在服务器上的一个公共的内存片。

     

    所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它,它面 向的是所有用户,相对而言session也是服务器上的一段内存,但他面向的是单个用户。它是服务器的一段内存块,也就是说每个cache一经创建就占用 了服务器资源的。所以从这点来说我们就可以说:并不是cache越多越好。

     

    l cache 是有时间限制的,超过了服务器设定的过期时间,它就会被服务器回收。

     

    l c.cache 可以存放任何对象

     

    2. Cache 如何创建以及如何销毁。

     

    l 创建cache

     

    在。Net环境下通过Cache.Insert(string key,object o)方法创建。其中key 代表cache的ID,o代表存到cache里的对象。

     

    l 销毁cache.

     

    通过方法Cache.Remove(string key)其中key 代表cache的 ID.

     

    l 调用cache.

     

    Cache支持装箱/拆箱操作。如你可以把一个DataSet对象ds通过Cache.Insert(“dsCache”,ds)的方式存到Cache中,可以通过拆箱操作 DataSet ds = (DataSet)Cache[“dsCache”]来访问它。

     

    3. 什么时候用cache.

     

    Cache 一般用于数据较固定,用的较频繁的地方。例如可以把进销存系统中可以把产品信息存入cache,在用户调用产品信息时通过调用cache即可,这样从很大 程度上减少了用户与数据库的交互,提高了系统的性能。反之,cache不适合用在数据变动快,使用范围很窄的地方。例如把一个具体采购单存入 cache中。

     

    4. cache 调用注意事项。

     

    Cache是有时间限制的。超过了服务器设置的过期时间,就会被服务器回收。当cache被回收后对应的内存块就会被清空,再次通过cache[“cachekey”]访问对象时返回的就是null值。所以以下这种调用就会出现异常

     

    DataSet ds = (DataSet)Cache[“cacheds”];

     

    DataRow dr = ds.Table[0].Row[0]; //出错,ds为null值,不存在表0。

     

    正确的写法应该是:

     

    DataSet ds

     

    If(Cache[“cacheds”] != null)

     

    {

     

    ds = (DataSet)Cache[“cacheds”];

     

    }

     

    Else

     

    {

     

    ds= GetDsFromDataBase();

     

    }

     

    DataRow dr = ds.Table[0].Row[0];

  • 相关阅读:
    LA 2038 Strategic game(最小点覆盖,树形dp,二分匹配)
    UVA 10564 Paths through the Hourglass(背包)
    Codeforces Round #323 (Div. 2) D 582B Once Again...(快速幂)
    UVALive 3530 Martian Mining(贪心,dp)
    UVALive 4727 Jump(约瑟夫环,递推)
    UVALive 4731 Cellular Network(贪心,dp)
    UVA Mega Man's Mission(状压dp)
    Aizu 2456 Usoperanto (贪心)
    UVA 11404 Plalidromic Subsquence (回文子序列,LCS)
    Aizu 2304 Reverse Roads(无向流)
  • 原文地址:https://www.cnblogs.com/lovenan/p/2778353.html
Copyright © 2011-2022 走看看