(转)浅析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判断之前,如果再加上异步线程的同步,这个系统开销是否合算?但如果把异步线程
同步之后,应该可提高系统的并发承载能力,对于这个没有实验经验,望有经验的朋友可以指点一下!
在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判断之前,如果再加上异步线程的同步,这个系统开销是否合算?但如果把异步线程
同步之后,应该可提高系统的并发承载能力,对于这个没有实验经验,望有经验的朋友可以指点一下!