发表时间:2009-04-23
最后修改:2009-04-23
80/20性能原则
Vilfredo Pareto 一个1900年前的经济学家,说了句特精辟的话,80%的财富是属于20%的人的(我就是那20%
),后来这句话被很多领域证明,它几乎成了一个万能定律,人们把它叫做帕累托原则(更有名的叫法是80-20原则),软件行业对这句话的解释是:80%的时间被花到20%的代码上。所以当我们优化我们的代码时,我们应该关注那20%的代码,这个理论也可以用在优化web页面上,在web优化方面,当前,大部分优化工作是在如何产生HTML文档方面(apache, C++, databases,等),但是这种对用户的响应时间优化工作只是对那20%进行的,我们的关注点应该放到那80%上。
用一个数据包嗅探器,我们可以发现响应时间的80%是发生在什么地方,表1中的图形视图(graphical view )是在没有缓存的情况下,请求http://www.yahoo.com所花的时间生成的图表,每一个横条代表一个特定的组件在浏览器中显示出来所花的时间,第一个横条是只显示HTML文档所花的时间,可以看出来,显示HTML文档只花了总时间的10%不到,apache把所有的HTML缝合到一起然后返回到浏览器(and for apache to stitch together the
HTML and return the response back to the browser.)(不会翻译这句话) 剩下的90%的时间用于显示图片、js、css等组件上
loading http://www.yahoo.com
表1说明了当前主流的web站点花费5%到38%的时间下载HTML文档,其余的62%到95的时间花费在HTML页面中的其他组件中(比如:图片、js、css等),由于在每一个并联的主机上,浏览器只能下载2到4个组件,使得如果一个页面的很多组件的话,会使页面的性能更低,我们的经验表明减少HTTP请求数对页面响应时间的影响是最大的(也就是说,减少HTTP请求数是最好的优化方法,这句话是我自己加的,呵呵),也是最简单的提高响应时间的方法
table 1. Time spent loading popular web sites
|
Time Retrieving HTML
Time Elsewhere
Yahoo!
10% |
90% |
Google
25% |
75% |
MySpace
9% |
91% |
MSN
5% |
95%
|
ebay
5% |
95% |
Amazon
38% |
62%
|
YouTube
9% |
91% |
CNN
15% |
85% |