首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web开发 >

多缓存并存,该如何解决

2012-02-08 
多缓存并存昨天在听云风讲的《高性能健壮系统中的内存管理》中,对于其中一些观点很有感触,虽然云风是用C来做

多缓存并存
昨天在听云风讲的《高性能健壮系统中的内存管理》中,对于其中一些观点很有感触,虽然云风是用C来做网络游戏的,C来做游戏在内存管理上跟网站的内存管理是由很大差异的,但是有很多理论也是相通的。 

 

缓存是大家都知道的东西,对于网站来说,一个请求过来,有可能返回用户需要的数据过程中,使用了不止一个缓存,是多个缓存。即软件架构中,多缓存并存。这时候要注意什么?


简单来说一句话。 

你如果要在A缓存外再起用了一个B缓存,那么B缓存能提高的性能应该比起直接访问A,性能要提升10倍以上。 

 

更具体说一个实际的例子,


CSDN某个具体论坛的帖子列表功能,它启用了三个缓存。从用户访问到数据库,依次是: 

1、IIS输出缓存 

即ASPX页面的如下设置 
<%@ OutputCache Duration="30" VaryByParam="*" %> 

2、每个请求进程的缓存; 

  CommunityUser user = null; 
  //检查用户信息是否在HttpContext中存在 
  HttpContext context = HttpContext.Current; 
  if (context != null) 
  user = context.Items[cacheKey] as CommunityUser;


使用这个缓存是因为一个页面,我们有很多ASCX控件,再加上MasterPage页, 而这些页面对应的代码中,都会需要一些当前用户的信息,如果每次都从更底层的缓存取的话,这个消耗其实也不小。 

3、进程外服务上的缓存; 
为了保证缓存数据的可扩展性,非IIS进程,其他服务器也可以访问,CSDN的最底层的缓存是使用企业服务来实现的。访问这里的缓存会导致跨进程的,甚至跨服务器的访问。 

 

上面三个缓存, 每个缓存一但命中,对他的访问,比下一级的缓存都起码有10倍以上的性能提高。就类似.net的垃圾回收中的0级对象区,1级对象区,2级对象区。 级数越低,访问性能越高,但是高级数的却是不可缺少的。 


[解决办法]
最近正在学习这些东西。
[解决办法]
受教了。
[解决办法]
学习
[解决办法]
正在使用中,但是不知道性能是否有如此大幅度的提升
[解决办法]
太深奥;
[解决办法]
struts好难好复习.好烦啊
[解决办法]
不懂啊,怎么办啊
[解决办法]
很深奥,要好好的学习学习!!
[解决办法]
我顶顶顶......我正准备学习网页的制作,学习学习...
[解决办法]
ding
[解决办法]
不懂啊
[解决办法]
先收藏了..

热点排行