通过具体实施后就可以获得第一手的web前端性能的数据了,然后每次新版本都跑,这就会获得大量的数据,为性能分析提供了基础的输入,同时应该还要综合使用多种工具去从不同的方向收集数据;比如showslow同时还支持yslow,pagespeed,webpagetest等测试工具传上去的数据,因此在具体的分析之前要从纵向、横向来收集数据,这样统计分析出来的结果才能有实际的参考价值。当然如果你还发现其它工具也可以提供一些性能数据,也可以收集起来,比如:httpanalyzer,httpwatcher都支持程序调用接口,很方便就可以收集http访问过程中的数据。还有像firebug,ie开发者工具都是可以提供性能调用功能的。

“工欲善其事,必先利其器”,工具有了,生产资料也有了--数据,那么后面的工作是靠我们自己的劳动力来产生价值了。性能调优的前提是分析出问题,分析问题是需要一定的准则的,不能盲人摸象人家说性能不好就不好,人家说已经调到最优了就是最优的状态了,只能这些标准还是需要结合实际情况来考虑不能一味的应用。比如:所有的最佳实践都会建议少加图片的展示,搜索网站是可以这样,但是如果是电子商务网站不可能是这样,否则网站就没有必要做了;而性能调优正是在这些现有的状况下、保证现有业务功能的前提下去找出具体可以优化的细节,帮助提高整体性能,而不是以牺牲业务功能为代价。比如:电子商务的网站虽然不能减少,但是可以把图片转换成优化格式的文件,png比bmp肯定好,png8比gif要好等等。

那么接下来就是之前N多性能评测工具的最佳实践,学习并了解这些最佳实践是入门的第一步,至少你可以有一个容易的入口来开始进行你的工作了。具体的链接见下:
yslow
page speed
dynatrace其实大概了解就可以了,因为使用工具测试后都会提示你哪些不满足,具体有哪些地方没有满足,非常的清晰方面。

而工具往往是死的,而且通常很多时候这些评测工具给出了高分但是前端性能还是会很慢的,所以规则只是保证web具备良好性能的基本要素之一,但并不是唯一或者最重要的。所以在评测工具之后我们还要看具体的载入完成时间长短,当然不同的网页载入时间是不一样的,搜索的主要就几百k,而电子商务首页都得十几M甚至更多,所以它们的页面载入的全部时间肯定是不一样的。不过没有关系,因为我们没有必要等所有内容都下载了再呈现内容给客户,所以还是可以投机来“蒙骗”过用户,比如:优先显示首屏的内容,这样用户就会从感觉上认同这个页面的高性能了。而页面的完整加载时间也是有价值的,可以内部制定一个性能标准,根据不同的页面属性来确定一个具体的网页完全加载时间应该在一个什么样的范围内;同时还可以作为下次版本再测试时的基准数据。

到这里2个重要的标准出来了,一个是用户有第一感觉时的时间,一个是完全加载所用的时间;调优的目的就是降低这2个时间,想要具体调优之前我们必须了解这些时间分别都由哪些时间判断组成的,这样就可以为达到最佳性能而提供最优秀的页面展现方案了。

第一用户感觉时间:
即浏览器开始渲染时的时间,而浏览器开始渲染之前是要解析html,解析css文件,然后生成DOM树,再转换成渲染树,再给渲染树中的节点进行布局计算【具体坐标】,然后才开始一层层树开始渲染,所以每一个步骤都可能影响到第一用户感觉时间。比如:
单个html文件过大则解析时间就会比较长
CSS格式单独放在外部就比内嵌式的效率高,因为一次性全部加载和应用,而且引用css时应该在页面的头部,因为现在的浏览器一般不会等到全部解析完DOM才去解析CSS或做其它事情,所以提前加载css文件可以加速提前达到可以渲染的时间点。
DOM树生成是从html开始的,正常的html应该解析一遍就可以完成了,但是如果html中有js调用,那么在解析时就会反复重新调整DOM树的结构,这样就会影响DOM生成的时间。
渲染树 = DOM + CSS渲染说明;所以这块的转换速度取决于具体内容,渲染的层次越多自然越长
渲染树的布局计算时间,取决去渲染树的节点数目,也就是DOM树的节点数目
最后开始渲染并展现我们看到的页面内容

第一用户感觉时间---到---最终完成载入:
用户有了第一感觉并没有结束,而且可能第一感觉只是页面上有内容,却并不是首屏的内容全部展现出来了;因此要保证良好的第一用户感觉,还得保障首屏的其他内容也是第一和时间被下载并展现出来。所以首屏用到的外部资源要优先下载,并且使用性能较好的资源服务器,资源要分布在不同的服务器【这样就可以并行下载了】,而且把较大的图片等可以切成多个小图片,然后分别下载,这样即使是一个较大的图片也是可以很快就能展现出来的。
页面所有资源下载完成后才会去加载onload事件,即页面展现完成后要自动去做的一些事情,比如某些网站的弹窗、跳页等;这些操作都是js去做的,而如果做js运行的时间太长,那么即使页面资源加载完成了,用户的使用还不是很友好,所以js的运行时间也是前端性能的一部分,不仅在加载时的js,整个页面上其它地方的js性能也是要考虑的,比如单个ajax请求的过程,某个前端操作js的使用时间;而JS除了时间性能以外还会有cpu、内存占用的性能考虑,这些dynatrace工具是可以提供的。
另外在整个外部资源下载过程中,还要尽量避免各类请求错误。

当然,除了这些还会有其它因素会影响web前端性能,比如:网速,DNS服务器配置等;如何抓住性能的瓶颈点是最重要的,一般最简单的就是看用时最长的段,然后再根据实际的情况和环境确定是不是正常的数值,进而确定是否有可调优的可能性及对应的手段等。

转自:http://blog.csdn.net/five3/article/details/7691365

转 web前端性能分析--分析篇的更多相关文章

  1. 转 WEB前端性能分析--工具篇

    在线网站类: WebPageTest 说明: 在线的站点性能评测网站,地址http://www.webpagetest.org/ 补充: 其实这网站也是个开源项目,所以支持自己搭建一个内部的测试站点 ...

  2. 转 web前端性能分析--原理篇

    转自http://blog.csdn.net/five3/article/details/7686715 web前端性能: 即是web用户在访问一个页面时所要花费的时间总和.即一个完全意义上的用户响应 ...

  3. Web前端性能分析

    Web前端性能通常上代表着一个完全意义上的用户响应时间,包含从开始解析HTML文件到最后渲染完成开始的整个过程,但不包括在输入url之后与服务器的交互阶段.下面是整个过程的各个步骤: 开始解析html ...

  4. 转 web前端性能分析--实践篇

    当我们知道了web前端性能的关键点后,那么接下来要做的就是如何去具体实施并获取这些关键点的数据了.通过前面的学习知道了不少好的工具,经过对比后个人觉得dynatrace还是不错的. 不仅支持ie,ff ...

  5. Web服务器性能监控分析与优化

    Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html

  6. Web前端性能优化进阶——完结篇

    前言 在之前的文章 如何优化网站性能,提高页面加载速度 中,我们简单介绍了网站性能优化的重要性以及几种网站性能优化的方法(没有看过的可以狂戳 链接 移步过去看一下),那么今天我们深入讨论如何进一步优化 ...

  7. Web前端性能优化教程05:网站样式和脚本

    本文是Web前端性能优化系列文章中的第五篇,主要讲述内容:网站样式和脚本代码的放置位置.使用外部javascript和css.完整教程可查看:Web前端性能优化 一.将样式表放在顶部 可视性回馈的重要 ...

  8. web前端性能优化指南(转)

    web前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用2. 在Mobile侧我们提出三秒种渲染完成首屏指标3. 基于第二点,首屏加载3秒完成或使用Loading4. 基于联通3G网络 ...

  9. web前端性能概述

    1.认识前端性能 不管你的网站设计的有多好,后端有多好,对于用户来说全部都是无感知的,用户只关心页面打开的速度,而前端性能表现很大程度上影响着用户的这种感知. 改善前端的性能对用户感知的整体性能提升有 ...

随机推荐

  1. go语言之进阶篇非结构体匿名字段

    1.非结构体匿名字段 示例 : package main import "fmt" type mystr string //自定义类型,给一个类型改名 type Person st ...

  2. Android UI-底部旋转菜单栏

    以前都是说每逢佳节倍思亲,现在的工作状态是每到周末倍亲切,年底真的是加班加的没完没了的,也没时间写博客,也没时间学习,周末闲来无事看到一个比较有意思的旋转菜单,没事自己实战了一下感觉还不错,代码倒是没 ...

  3. iframe跨域与session失效问题

    何为跨域跨域session/cookie? 也就是第三方session/cookie.第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会 ...

  4. word 文档如何加密

    给Word文档加密主要有以下几个方法:文件加密文件菜单设置:1.打开需要加密的Word文档.2.选“文件”的“另存为”,出现“另存为”对话框,在“工具”中选“常规选项”,出现“保存”选项卡.3.分别在 ...

  5. jmeter-The JVM should have exitted but did not

    修改 jmeterengine.force.system.exit=true

  6. MySQL源码升级

    mysql源码升级 升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法是最省事儿的,也是最保险的,缺点的话,也显而易见,大库的mysqldump费时费力. ...

  7. JSP基本的语法、3个编译指令、7个动作指令、9个内置对象

    一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...

  8. .NET破解之迅捷PDF转换器(续)

    在以前的博文<.NET破解之迅捷PDF转换器>中使用了暴力破解的方法,现在软件版本从5.0升级到6.3,所以也尝试用新的方法. 方法一:暴力破解法 如往常一样,查找搜索到关键的函数,即Is ...

  9. solr安装使用笔记

    下载 solr官方下载地址:http://lucene.apache.org/solr/ 使用 启动 solr dir/bin/solr.cmd start 停止 solr dir/bin/solr. ...

  10. taro 引用相对路径图片

    直接将相对路径放在src属性中,不起作用, 需要先import进来,最好把图片放到服务器上,然后直接写http路径 错误写法: <Image src="./images/front.p ...