,转浅析ASP.NET FORUMS中缓存机制的应用 siteurls.config

刚刚看到ASP.NET FORUMS中用siteurls.config来存放URL链接地址,想到如果频繁读取是否会有性能开销,幸运的看到了这篇文章,FORUMS使用了缓存来解决。转载一下!

在asp.net中有三种缓存机制,我在这里主要提到的是asp.net forums中使用的缓存api cache对象

cache对象可以说在asp.net forums中无所不在,以

siteurls()类为例

在构造函数中有如下代码

if (httpruntime.cache[cachekey] == null) {

.

.

system.web.caching.cachedependency dep = new system.web.caching.cachedependency(file);

system.web.caching.cachedependency dep2 = new system.web.caching.cachedependency(file);

httpruntime.cache.insert(cachekey, paths, dep, datetime.maxvalue, timespan.zero);

httpruntime.cache.insert(cachekeyreverse, reversepaths, dep2, datetime.maxvalue, timespan.zero);

}

paths = (namevaluecollection) httpruntime.cache[cachekey];

reversepaths = (namevaluecollection) httpruntime.cache[cachekeyreverse];

这个类是用来存放超链接集合的,他会先判断键值是否为空,如果为空的话就把web\siteurls.config里的内容

加载到缓存中,如果已经存在了,就直接从缓存中去读取,在内存中读取内容,当然要比在硬盘上读取要快得多,

通过system.web.caching.cachedependency把缓存中的内容和文件相关联起来,如果源始文件改动,就会更

新缓存。

另外aspnetforums.components.globals().loadskinnedtemplate也是cache对象的一个比较典型的应用

他会判断服务器控件是否已经在缓存中存在,如果存在就不重新创建。

合理的使用cache可以使程序的速度有大幅的提高,因为结省了很多不必要的读取或创建时间。

我在想,如果在做cache判断之前,如果再加上异步线程的同步,这个系统开销是否合算?但如果把异步线程

同步之后,应该可提高系统的并发承载能力,对于这个没有实验经验,望有经验的朋友可以指点一下!