查看: 12368|回复: 41

【大话IT】牺牲空间换取时间:这样的缓存靠谱吗?

[复制链接]
认证徽章
论坛徽章:
127
茶鸡蛋
日期:2012-01-16 14:24:41鲜花蛋
日期:2012-06-06 14:48:18双黄蛋
日期:2013-01-07 21:07:482013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:082014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上加薪
日期:2014-03-18 09:57:11马上有车
日期:2014-03-20 16:13:24马上有房
日期:2014-03-20 16:14:11
发表于 2014-10-27 18:37 | 显示全部楼层 |阅读模式

有一句话说得好,空间换时间,这也正是缓存机制的精髓。打个比方,我们上班族通常用杯子去饮水机接水喝,这里的杯子就是Cache的角色。腾讯阿里坐拥如此庞大的用户,我们刷微信、聊QQ、双十一网上购物为啥没卡?这背后得益于这些互联网企业建立了自己的CDN系统。将离你很远的东西,放在离你很近的地方,CDN通过这种方式提高了用户的访问速度。牺牲空间成本来换取时间,从这个角度上看,CDN本质上也是一种特殊的中间cache。


当我们上网购物,访问URL时,试想如果每次都需要查询京东的DNS,是不是会产生可怕的访问量?万一挂了,我们就无法继续go shopping啦!那浏览器是怎么来实现缓存的呢?



在移动互联网时代,流量昂贵是很多用户心中深深的痛。于是,又出现了一种新型的中间cache, 也就是在浏览器和web服务器再架设一个中间代理。这个代理服务器会帮助手机浏览器去请求web页面,然后将web页面进行处理和压缩(例如压缩文件和图片),使页面变小,然后再传输给手机端的浏览器。可见缓存无处不在,本期话题我们重点探讨缓存。


话题讨论:

1.在您的日常生活和工作中,哪些场合会使用到缓存?可以举例分享。

2.当数据放在缓存中的时候,我们程序的多个线程都可以访问这个公共的区域。多个线程在访问缓存数据的时候,会产生一些竞争,这也是多线程中常常发生的问题。那通过什么方法可以解决这个问题呢?

3.缓存对象越大,是否意味着会消耗更多的CPU?在速度与消耗内存的之间,我们该如何寻求一种平衡?

4.当我们访问Js、html、css、图片等静态内容时,通过哪些方法可以降低服务器的压力,提升用户体验效果?

5.对于习惯手机上网的同学们,可能会觉得网页加载是一件头疼的事情。为了解决这个问题,预加载方式在移动端很流行,浏览器会自动判断页面的关联内容,当用户浏览A页面的时候,就提前下载并且加载B页面的内容。用户感觉到B页面是一瞬间就出现了,中间没有任何延迟的感觉。这种方式有没有缺点呢?

活动时间:2014年10月27日-11月15日

活动奖励:根据大家的回复情况我们评选获奖会员

苦劳奖:回复次数最多的2名 赠送技术图书1本+社区徽章1枚

功劳奖:回复质量最高的网友1名 赠送技术图书1本


论坛徽章:
8
技术图书徽章
日期:2014-01-26 13:54:38技术图书徽章
日期:2014-03-27 09:30:56技术图书徽章
日期:2014-03-31 10:50:45技术图书徽章
日期:2014-04-25 14:18:49技术图书徽章
日期:2014-05-19 11:17:53秀才
日期:2015-06-29 15:26:52ITPUB14周年纪念章
日期:2015-10-26 17:24:11秀才
日期:2015-11-11 09:48:44
发表于 2014-10-28 17:42 | 显示全部楼层
1.在您的日常生活和工作中,哪些场合会使用到缓存?可以举例分享。
   生活中最常用的缓存当然就是浏览器缓存用户账号密码啦,还有就是浏览器的浏览记录也可以算做是缓存

2.当数据放在缓存中的时候,我们程序的多个线程都可以访问这个公共的区域。多个线程在访问缓存数据的时候,会产生一些竞争,这也是多线程中常常发生的问题。那通过什么方法可以解决这个问题呢?
    目前在我们系统中主要做法就是调整个方面的性能,还有就是我们另加了一台server,某些特殊查询功能的UI访问的DB就在这个专门的server上,差不多算是用空间换取时间了

3.缓存对象越大,是否意味着会消耗更多的CPU?在速度与消耗内存的之间,我们该如何寻求一种平衡?
   缓存对象越大,消耗的CPU更多,尽可能的还是少用缓存,某些太大的对象最好还是不要用缓存来存储比较好

4.当我们访问Js、html、css、图片等静态内容时,通过哪些方法可以降低服务器的压力,提升用户体验效果?
   类似微信的做法,把用户想要的东西放在离他较近的地方,另外,用户首先看到的是压缩过的图片等,当他需要看高清图片的时候,提供给他这种功能就行了,毕竟考虑到流量的问题,大部分用户是不会直接看高清图片的。

5.对于习惯手机上网的同学们,可能会觉得网页加载是一件头疼的事情。为了解决这个问题,预加载方式在移动端很流行,浏览器会自动判断页面的关联内容,当用户浏览A页面的时候,就提前下载并且加载B页面的内容。用户感觉到B页面是一瞬间就出现了,中间没有任何延迟的感觉。这种方式有没有缺点呢?
    缺点肯定是有的,在A页面如果可以链接到很多的B、C、D......页面,那浏览器的判断可能多半是根据点击量来判断去加载哪一个了,比如说C、D页面好了,但是这样一来,万一用户没有去点击C、D页面,那对他来说无形中就消耗了很多不必要的流量,谁都知道,现在流量那么贵,你懂的,,,,,这样的浏览器,用户知道了背后的机制,想必是要卸载的了。

使用道具 举报

回复
求职 : 数据库管理员
招聘 : Java研发
认证徽章
论坛徽章:
6348
ITPUB9周年纪念徽章
日期:2014-05-02 10:36:402011新春纪念徽章
日期:2014-12-29 12:11:142010广州亚运会纪念徽章:卡巴迪
日期:2014-08-06 08:44:252012新春纪念徽章
日期:2014-12-29 12:11:142013年新春福章
日期:2014-12-29 12:11:14马上有车
日期:2014-12-29 12:11:14马上有房
日期:2014-12-29 12:11:14马上有钱
日期:2014-12-29 12:11:14马上有对象
日期:2014-12-29 12:11:14马上加薪
日期:2014-12-29 12:11:14
发表于 2014-10-27 21:01 | 显示全部楼层
本帖最后由 2009532140 于 2014-11-20 09:28 编辑

1.在您的日常生活和工作中,哪些场合会使用到缓存?可以举例分享。

都会用到,从上层应用所使用的ecache,到底层的操作系统,没有一个不用到缓存机制的,或者说是多级缓存。

2.当数据放在缓存中的时候,我们程序的多个线程都可以访问这个公共的区域。多个线程在访问缓存数据的时候,会产生一些竞争,这也是多线程中常常发生的问题。那通过什么方法可以解决这个问题呢?

这个从底层的操作系统来看都是信号量来控制多个线程访问临界区的。以免有数据不一致的情况出现。

3.缓存对象越大,是否意味着会消耗更多的CPU?在速度与消耗内存的之间,我们该如何寻求一种平衡?

这个不太清楚,只是觉得缓存的多,相反会使得速度降下来。

4.当我们访问Js、html、css、图片等静态内容时,通过哪些方法可以降低服务器的压力,提升用户体验效果?

一般来说,这种内容只是在第一次加载需要下载,之后这类的内容都缓存到本地了。

要说降低服务器压力的话,首先在应用端将这类的内容压缩,到本地在解压缩,我看PUB 也是用到这种技术了。

另外,接F5 开启压缩功能,能压缩75% 左右,系统的带宽立马改善一大截。

5.对于习惯手机上网的同学们,可能会觉得网页加载是一件头疼的事情。为了解决这个问题,预加载方式在移动端很流行,浏览器会自动判断页面的关联内容,当用户浏览A页面的时候,就提前下载并且加载B页面的内容。用户感觉到B页面是一瞬间就出现了,中间没有任何延迟的感觉。这种方式有没有缺点呢?

有,就是用户未必浏览加载的页面了。

不过应该有开启预加载功能的选项。

使用道具 举报

回复
论坛徽章:
401
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2014-10-27 23:10 来自手机 | 显示全部楼层
有缺点,根据输入生成动态页面不能预测

使用道具 举报

回复
认证徽章
论坛徽章:
184
2013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-06-05 15:29:212013年新春福章
日期:2013-05-27 10:23:002013年新春福章
日期:2013-06-05 15:29:21马上有房
日期:2014-03-03 16:14:44马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-03-04 16:55:19ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42
发表于 2014-10-28 09:38 | 显示全部楼层
路过支持。。。

使用道具 举报

回复
论坛徽章:
1
比亚迪
日期:2013-10-23 14:04:37
发表于 2014-10-28 09:55 | 显示全部楼层
移动客户端页面预加载方式有无效加载、浪费流量的缺点

使用道具 举报

回复
论坛徽章:
16
授权会员
日期:2005-11-01 10:49:02ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472011新春纪念徽章
日期:2011-02-18 11:43:322010年世界杯参赛球队:南非
日期:2010-05-12 11:08:572010新春纪念徽章
日期:2010-03-01 11:04:542009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:狗
日期:2008-10-31 12:50:13生肖徽章2007版:狗
日期:2008-10-24 18:01:04奥运会纪念徽章:排球
日期:2008-10-24 13:30:01生肖徽章2007版:狗
日期:2008-10-20 14:41:16
发表于 2014-10-28 10:38 | 显示全部楼层
打个比方,我们上班族通常用杯子去饮水机接水喝,这里的杯子就是Cache的角色

使用道具 举报

回复
认证徽章
论坛徽章:
86
秀才
日期:2015-09-21 09:46:16目光如炬
日期:2014-07-28 06:00:03马上有钱
日期:2014-06-16 15:55:42马上有房
日期:2014-06-16 15:55:422014年世界杯参赛球队: 伊朗
日期:2014-06-13 11:29:242014年世界杯参赛球队:巴西
日期:2014-06-06 14:36:14马上有钱
日期:2014-04-04 13:51:21马上加薪
日期:2014-04-04 13:35:40马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02
发表于 2014-10-28 10:39 | 显示全部楼层
占楼更新

使用道具 举报

回复
论坛徽章:
11
迷宫蛋
日期:2011-10-24 10:43:14蛋疼蛋
日期:2013-01-10 11:03:47奥运纪念徽章
日期:2012-12-06 09:21:40ITPUB 11周年纪念徽章
日期:2012-10-31 14:48:00ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:422012新春纪念徽章
日期:2012-01-04 11:57:13茶鸡蛋
日期:2011-12-06 16:25:55ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51ITPUB官方微博粉丝徽章
日期:2011-10-31 10:21:02
发表于 2014-10-28 11:38 | 显示全部楼层
路过,支持!

使用道具 举报

回复
认证徽章
论坛徽章:
6
2013年新春福章
日期:2013-02-25 14:51:24青年奥林匹克运动会-高尔夫
日期:2014-09-25 21:54:05优秀写手
日期:2014-12-25 06:00:12马上有对象
日期:2015-01-24 21:15:50马上加薪
日期:2015-01-29 10:29:42秀才
日期:2016-12-21 16:55:07
发表于 2014-10-28 11:44 | 显示全部楼层
坐等学习。。。

关注中

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
25
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25itpub13周年纪念徽章
日期:2014-10-08 16:34:19itpub13周年纪念徽章
日期:2014-10-10 17:49:05马上有车
日期:2014-12-19 09:23:24马上加薪
日期:2014-12-29 20:30:27马上有车
日期:2015-01-20 22:29:13美羊羊
日期:2015-03-04 14:52:282015年新春福章
日期:2015-03-06 11:58:18狮子座
日期:2015-07-14 14:44:11秀才
日期:2015-08-17 13:13:32
发表于 2014-10-28 12:47 | 显示全部楼层
有时候,不使用缓存区反而更好。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表