技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> Web性能优化中的CPP方法

Web性能优化中的CPP方法

浏览:2793次  出处信息

    毋庸置疑,Web性能优化是最近几年非常热门的话题。从Yahoo!在2006年推出YSlow以及相应的14的军规,到今年领军人物Steve Souder提出WPO的概念。几年时间里,网站性能重要性的概念已经深入人心,除一线的工程师,包括产品经理以及管理层纷纷加入其中,推进页面性能优化。大家普遍认为:性能好的网站,能吸引更多的用户,提供更好的用户体验,增加收入,并且降低成本。

    那么如何才能做好性能优化工作?Steve的两本书:《High Performance Web Sites》(中文版:《高性能网站建设指南》)和《Even Faster Web Sites》(中文版:《高性能网站建设进阶指南》),讲述了Web性能方面的最佳实践以及后面的研究和现实效果,可以说这个领域的葵花宝典。淘宝搜索结果页践行其中的最佳实践,不断总结优化,取得了明显的成果。基于这些实际的工作,我们总结出来性能优化简单有效的CPP方法和大家分享。

    

  

Cache

    Cache是任何大规模系统必须考虑的一个问题,其基本依据是从Cache中获取数据性能上要远优于重新计算。基本模式是Miss -> Store -> Hit。如下图所示:

    

    基本步骤:

首先检查Cache中是否有对应的数据;如果没有,请求后端,获取数据后将数据缓存起来;返回结果;如果命中,直接从cache 中返回数据。

    通常情况下,使用Cache能够大幅提升系统的性能,降低后台数据库的压力。淘宝目前很多系统都在使用Memcached和Tair.更多内容可参见对应的官方网站:

Memcached: http://memcached.org/Tair: http://code.taobao.org/project/view/2/

    需要特别指出的,Cache不是万能钥匙,并非适用所有的场景。使用时具体分析业务需求,关注Cache大小和命中率等指标。

Parallelism

    为了更好的用户体验,一个页面要尽可能地展示更多的相关信息,这种趋势被称为“Mashup”。以淘宝搜索结果页为例,页面中要展示宝贝搜索结果、相关搜索、产品搜索等多个模块的数据。如果按照传统串行化的做法,依次请求每一个后台模块,必然将大幅增也页面延迟。如果能够同时请求这些后台接口,做到并发访问,将大幅提升页面的性能。

    并发的方法有很多。玄悲同学在这篇文章给出了使用Multi CURL实现并发的方法,供大家参考。此外,Facebook在今年推出了革命性的BigPipe技术,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行。这是类似于大多数现代微处理器的流水线执行过程:多重指令管线通过不同的处理器执行单元,以达到性能的最佳,也有很大的借鉴意义。

Prediction

    性能优化关乎用户体验,其中很重要的一个工作就是度量(Measuring),究竟页面要多块才能满足用户的需求?如果有时候受客观条件限制,不可能做到与生俱来的快,有什么办法来优化?这个问题有点像排兵布阵,很多情况下,我们需要浏览器的特性,做到分段输出。让用户尽可能早地看到页面的内容,降低用户首次交互所需要的等待时间(TTL,Time to Interaction)。

    以淘宝的搜索结果页为例,我们收到用户的查询请求后,简单校验判断后,就开始向浏览器发送页头等信息,降低The First Byte Time。在客户端下载页头HTML和JS、CSS的同时进行后端的计算,完成后将页面输出给用户。这种做法能够一定程度上减少用户等待时间,改善用户体验。在慢速网络的条件下,用户也能够很快地看到搜索结果页的页头和搜索框,以及部分结果。而不是面对一张空白页面等待结果。

    以上就是我们对于性能优化的一些总结。欢迎对此感兴趣的同学交流探讨。

建议继续学习:

  1. WEB系统需要关注的一些点    (阅读:14110)
  2. 30分钟3300%性能提升――python+memcached网页优化小记    (阅读:12129)
  3. 基于SSD的数据库性能优化    (阅读:7414)
  4. jQuery性能优化指南    (阅读:7325)
  5. Buffer和cache的区别是什么?    (阅读:6839)
  6. 谈冷热数据    (阅读:5759)
  7. 一次简单C程序的性能优化    (阅读:5599)
  8. Linux操作系统中内存buffer和cache的区别    (阅读:5316)
  9. mysql sql 百万级数据库优化方案    (阅读:5059)
  10. 学习:一个并发的Cache    (阅读:4987)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1