1、后端的问题
看请求瀑布图,如果第一个请求特别长、特别长,明显比其他请求放到一起不和谐。一般网页第一个请求是动态请求的概率比较大,如果这个请求特别耗时,那肯定不是前端的责任,html都没加载完呢,你怎么就能说是前端的问题呢。作为一个后端RD,优化代码、优化数据库、优化一切可以优化的东西。
2、请求数太多
数一下瀑布图总共有多少行,on load之前如果有几百行,那么请求就太多了。一下子加载那么多资源真的好么?css,js该合并的合并,图标该精灵的精灵,有些不重要的东西不用放到on load之前加载,放到后面也一样嘛。
3、老鼠屎
看到图中的这个请求没?再看看其他请求,这个请求比其他请求的时间大出一个数量级。这种情况一般是因为某一个资源太慢了,它就是一颗老鼠屎,坏掉了整锅汤,导致网页整体变慢。资源慢的原因,概率比较大的几个可能是:(a)资源在第三方站点上,他们很慢;(b)这个资源太大了;(c)这个资源使用的域名有问题。
4、网络问题
仔细看一下一个单独的HTTP请求,他们会分为好几段,分别是域名解析、建立连接、发送请求、等待响应和接收数据几个阶段。理论上域名解析和建立连接应该占用的时间很小才对,主要的时间应该用在后面几个阶段上。上图中,浅灰色和灰色分别代表域名解析和建立连接,可以看出这两个请求中花费在网络层上的时间太长了,超过总时间的一半还要多。网络层时间过长除了可能和底层网络有关之外,还可能和站点的服务端性能有关(后端RD的事情哦)。当然,如果这种情况发生在向第三方站点发送的请求上(实际上也经常发生),可以建议取消或者更换某些站点功能从而避免这样的请求了。
5、接收数据时间过长
HTTP请求的大部分时间应该花在后面几个阶段,比如等待响应和接收数据。但是,如果接收数据的时间太长了,长到数百毫秒甚至以秒计算的时候,那也是有问题的。这种情况一般是因为下载的内容太重了,例如大图片、大脚本等。这类问题可以使用GZIP压缩、图片压缩或者JS/CSS的minify等手段来解决。
6、js阻塞请求
两个连续的请求之间出现了一个很大的空隙,为啥会出现这个空隙呢?可能js性能有问题,解析执行js花了很长时间,导致这段时间的资源加载都被阻塞住了。
7、如果以上都没有
可以翻看每个HTTP请求,仔细研究每个请求头响应头,看看是不是没有设置缓存啦,图片优化的不够好啦之类的。
转载于http://blog.csdn.net/mysouling/article/details/51210297