原文
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请求数是最好的优化方法,这句话是我自己加的,呵呵),也是最简单的提高响应时间的方法
?
Time Retrieving HTML Time Elsewhere | |
??????????? 10% | ????????? 90% |
??????????? 25% | ?????????? 75% |
??????????? 9% | ??????????? 91% |
??????????? 5% | ??????????? 95% |
??????????? 5% | ??????????? 95% |
??????????? 38% |
??????????? 62% |
???????????? 9% | ??????????? 91% |
???????????? 15% | ??????????? 85% |