网络编程
位置:首页>> 网络编程>> JavaScript>> 有关缓存 Cache 的随想

有关缓存 Cache 的随想

作者:grace 来源:gracecode.com 发布时间:2008-06-09 14:25:00 

标签:缓存,cache,性能,程序

听说 FaceBook 开放其网站的代码了,期前也算是了解过 FaceBook 的架构,所以重点就是看其代码的质量。

可以毫不夸张的说,FaceBook 的代码质量、风格都不亚于某个开放源代码的项目(当然,并不是每个开源的项目代码都很友好)。我可以用“教科书式”的代码,来形容我眼前所看到的 FaceBook 的源代码。

有点离题了,开发语言(或者工具)的本身,并不能说明系统会有多么的优秀。目前的网络上所能找到的、开源的工具,只要稍加都能很好的提升性能。

锦上添花的就是加上良好的 Cache(缓存)机制。在“上古时代”,人们对于性能上的考虑,还处在程序也算法的优化上。随着 Web2.0 的到来(什么是 Web2.0?)、Ajax 这样的技术的出现,造成服务器处理的请求比平时多得多,此时就需要从宏观上改进整个系统的机制。

很快就出现了大量的相应工具,首先是 Squid、然后是 Memcached,最后是具体到某个语言(比如 PHP)的扩展正如期前所说的,Ajax 等前端技术的流行,Cache 技术逐渐从“后台”的点心,转成了“正餐”。

重新回到上述的 FaceBook 中,从上往下看(似乎这图不是完整的逻辑,搞不清楚为什么 Database 会在这个位置),所涉及到的 Cache 技术就有 APC、Memcached、CDN 以及 浏览器的缓存。基于这点就能够充分的表明,FaceBook 能够应对如此高的负载的因素之一就是合理的使用 Cache 机制。

Cache 的确是个好东西,但是有时候也带来了不少的麻烦。比如在前端开发过程中,往往就会碰到用户反应样式、脚本无法执行的情况,此时本人就会很机械的告诉他 Ctrl + F5 刷新。

坦白的说,本人认为使用 Cache 在项目中,不应该过分的乐观。Cache 所带来的用户重复刷新(虽然在良好的 Cache 机制下这种情况很少),空间上的逐渐增大(真的是用空间换取时间,想想 FaceBook TB 级别的 Cache 容量吧),这是使用 Cache 所带来的负面效果(但这往往有些技术人员会将此拿来当作炫耀的资本)。

不要将 Cache 作为提升性能的救命稻草。前段时间 Twitter 间歇性的罢工,虽然找到瓶颈是数据库。但本人同时也听到某些观点,诸如“如果 Twitter 有良好的 Cache 机制也许就不会这样”,在这里本人保留意见。

请容我胆大的猜想,也许 Cache 会和 Ajax 一样,最终有一天会消失。技术这玩意也就是这样,没有更好的只有最合适的。退一步讲真的到了那一天,Cache 的替代方案也会造成另外的问题也说不准 -- 以后的事情谁知道呢?

想起了一句话,就是

“计算机原先是为了解决麻烦才搞出来的,但是后来它本身就成了麻烦”。

0
投稿

猜你喜欢

  • 1。建立数据库表 表名为online 设如下字段 id '用来记录每一个访问都的session.sessionid name 
  • 原作者:Jonathan 翻译:charlee原文:http://f6design.com/journal/2006/10/21/the-v
  • 很多朋友和我讨论了一些关于网站开发到底使用哪种语言最合适,尤其是到网站一定有一定流量的时候,到底那种web语言更适合做站呢,精灵这里根据自己
  • 一、在访客的内心深处做导航我讨厌迷失,不管是在道路上或是在线网络上。猜想一下?您的访客也是这样的。就像我们期望看到的道路上的路标一样,来帮助
  • 首先数据库里需要有一个自动编号字段(ID)。然后第一次访问的时候,取出所有记录,定制好每页的记录数PageSize,计算出页数,然后根据页数
  • div和span、relative和absolute、display和visibility是很容易混淆和弄错的HTML标签与CSS属性,简单
  • 在Intel的早期,Andy Grove遇到一个雇员 - 他建议公司在芯片的基础上开发个人计算机。AndyGrove疑问道“个人计算机能做什
  • 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码。但是,建议你为每个账户设置密码。如果你以前设置了根用户密码,
  • 代码如下:CREATE DATABASE 临时的 ON ( NAME='临时的_Data', FILENAME='h
  • 在网上找到的随机不重复查询代码:select top 15 * from article&
  • 字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串,如果找到字符串,则返回字符的起始位置 (0表示第一个字符,1表
  • 也不一定,以前从来没有深入的研究过sql查询,最近买了一本T-SQL查询的书,把以前忽视的问题都记录一下 以前一直模模糊糊的把sqlserv
  • Aptana IDE现在已经被重命名为Aptana Studio,这款IDE的背后有着风险投资的支持,旨在给Web开发者
  • 测试:IE6、IE7、FF3.014突发奇想的效果,主要突出构思,效果还比较粗糙,好好创意一下,应该可以引申出一些比较有新意的图片切换效果。
  • jQuery的makeArray有其局限性(1.3.4还有bug),我自己实现了一个,不过涉及N多辅助方法。var dom = {},_to
  • 一、Position1、语法:position:static/ absolute / fixed / relative2、参数:(1)sta
  • 这也是老早前整理的了,也贴出来吧:1.  showModalDialog和showModelessDialog的异同 
  • 分区视图联接来自一组成员的水平分区数据,使数据看起来象来自同一张表。SQL Server 2000 区分本地分区视图和分布式分区视图。在本地
  • 先声明一下,这是本人在某个项目中用到的,本人自己写的,如有雷同纯属巧合。同时也欢迎高人指正。这种星级的投票效果很常见,但是目前线上大多都是通
  • 所谓“评论”不是必须得有文本框,用户录入提交数据才算,广义上的评论包括用户的任何“表态”,典型如打分。我接触电子商务时间并不长,最早应该是0
手机版 网络编程 asp之家 www.aspxhome.com