博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多缓存并存
阅读量:4971 次
发布时间:2019-06-12

本文共 902 字,大约阅读时间需要 3 分钟。

昨天在听云风讲的《高性能健壮系统中的内存管理》中,对于其中一些观点很有感触,虽然云风是用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级对象区。 级数越低,访问性能越高,但是高级数的却是不可缺少的

转载于:https://www.cnblogs.com/SUPERAI/archive/2011/11/28/2266440.html

你可能感兴趣的文章
wc 命令使用说明
查看>>
Java中4大基本加密算法解析
查看>>
降阶法计算行列式方法有个地方有Bug(原文也已更正,此为更正后部分)
查看>>
基于C++ 苹果apns消息推送实现(2)
查看>>
Android结构分析Android智能指针(两)
查看>>
unity 编辑器和插件生产(四.2)
查看>>
springMVC 获取本地项目路径 及后整理上传文件的方法
查看>>
Spring3.0 AOP 具体解释
查看>>
Android反编译-逆天的反编译
查看>>
Android简易实战教程--第十一话《获取手机所有应用信息Engine类详解》
查看>>
Linux下which、whereis、locate、find 命令查找文件
查看>>
codeforces1101D GCD Counting 【树形DP】
查看>>
Delphi 获取命令行输出的函数
查看>>
面向对象六大原则
查看>>
2-常见机器学习模型总结
查看>>
centos7 安装搜狗输入法
查看>>
本日进度3
查看>>
PyCharm下创建并运行我们的第一个Django项目
查看>>
第十九篇 同源策略与Jsonp
查看>>
python3 调用 Linux 脚本
查看>>