.NET中如何有效的使用Cache
点击次数:29 次 发布日期:2008-11-27 02:01:55 作者:源代码网
|
源代码网推荐 Cache 即高速缓存 ,我想很多人对他的第一印象一定像我一样,感觉他一定能提高系统得性能和运行速度。的确。Net推出cache的初衷确实是这样的。那么cache是如何提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。 源代码网推荐 源代码网推荐 1.Cache 是如何工作的 源代码网推荐 源代码网推荐 Cache 是分配在服务器上的一个公共的内存片。 源代码网推荐 源代码网推荐 所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它,它面向的是所有用户,相对而言session也是服务器上的一段内存,但他面向的是单个用户。它是服务器的一段内存块,也就是说每个cache一经创建就占用了服务器资源的。所以从这点来说我们就可以说:并不是cache越多越好。 源代码网推荐 源代码网推荐 cache 是有时间限制的,超过了服务器设定的过期时间,它就会被服务器回收。 源代码网推荐 源代码网推荐 c.cache 可以存放任何对象 源代码网推荐 源代码网推荐 2.Cache 如何创建以及如何销毁 源代码网推荐 源代码网推荐 创建cache 源代码网推荐 源代码网推荐 在。Net环境下通过Cache.Insert(string key,object o)方法创建。其中key 代表cache的ID,o代表存到cache里的对象。 源代码网推荐 源代码网推荐 销毁cache. 源代码网推荐 源代码网推荐 通过方法Cache.Remove(string key)其中key 代表cache的 ID. 源代码网推荐 源代码网推荐 调用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]; 源代码网推荐 源代码网推荐 源代码网推荐 源代码网供稿. |
