鲁德——web前端性能分析--原理篇

web前端性能: 即是web用户在访问一个页面时所要花费的时间总和。即一个完全意义上的用户响应时间,相对于服务器的响应时间而言还会包括更多的内容和影响因素。那么一个web页面的完整请求包括了哪些部分的时间总和就是web前段性能分析和优化所需要了解的基础知识,先了解一下用户从浏览器访问一个url后到页面完全展示所有内容的整个过程吧。
登录 后即可查看全部文章

web前端性能:

即是web用户在访问一个页面时所要花费的时间总和。即一个完全意义上的用户响应时间,相对于服务器的响应时间而言还会包括更多的内容和影响因素。那么一个web页面的完整请求包括了哪些部分的时间总和就是web前段性能分析和优化所需要了解的基础知识,先了解一下用户从浏览器访问一个url后到页面完全展示所有内容的整个过程吧。

页面的请求过程:

1、浏览器的url请求

2、递归寻找DNS服务器

3、连接目标IP并建立TCP连接

4、向目标服务器发送http请求

5web服务器接收请求后处理

6web服务器返回相应的结果【无效、重定向、正确页面等】

7、浏览器接收返回的http内容

8、开始解析html文件,当然是自上而下,先是头部,后是body

9、当解析到头部css外部链接时,同步去下载,如果遇到外部js链接也是下载【不过js链接不建议放在头部,因为耽误页面第一展现时间】

10、接着解析body部分,边解析边开始生成对应的DOM树,同时等待css文件下载

11、一旦css文件下载完毕,那么就同步去用已经生成的DOM节点+CSS去生成渲染树

12、渲染树一旦有结构模型了,接着就会同步去计算渲染树节点的布局位置

13、一旦计算出来渲染的坐标后,又同步去开始渲染

1410-13步进行过程中如果遇到图片则跳过去渲染下面内容,等待图片下载成功后会返回来在渲染原来图片的位置

15、同14步,如果渲染过程中出现js代码调整DOM树机构的情况,也会再次重新来过,从修改DOM那步开始

16、最终所有节点和资源都会渲染完成

17、渲染完成后开始pageonload事件

18、整个页面load完成

整个过程中会有很多的分别请求,所以TCP连接会很多,并且每一个用完都会自己关了,除非是keep-live类型的可以请求多次才关闭。

综上所述:

一个页面的请求等于一个或多个url的请求,因此一个页面里包含的外部请求数会影响页面的整体性能

每请求一次就要多占用一次cpu使用、多一次tcp连接

每个url的请求又包括寻址、连接、请求传输、返回传输、断连的过程;因此每个阶段的外部环境也会影响整体性能

DNS服务器的寻址时间,请求和返回内容时的网络环境

除了URL请求数量外,每个请求的内容大小也是影响性能的主要因素

文件越大消耗在传输过程中的时间就越长

请求同样多的资源,并行请求和串行请求速率是不一样的,所以请求的资源要尽量支持同步请求

同步请求不同资源,即请求被发送到不同的资源服务器即可

依据浏览器的加载、渲染机制,选择合适的HTML内容排版方式

减少反复创建对象实例的次数、充分利用缓存机制

优先加载用户关注的内容

css加载优于js内容,首屏内容优于非首屏内容

关注完http请求的过程后,再来关注整个请求过程中关注的几个时间点,通过确定时间点就可以确定影响性能的时间段,就是确定影响性能的因素。根据上面的介绍主要的几个时间点又可以分页面的整体时间点、以及单个url请求过程中的时间点。【基于httpanalyzer工具的指标】

单个url请求的主要时间点:

1Cache Read:缓存读取时间,或304错误的处理时间

2Block:请求等待时间,取决于缓存检查,网络连接等待

3DNS LookupDNS服务器查找时间,取决于dns服务的数量,dns注册的域

4Connecttcp连接的总时间,取决于连接类型,sshkeepalive都会比http

5Send first to last:发送请求内容的时间,取决于请求内容大小,及上行的传输速度

  • 发表于 2017-10-09 10:13
  • 阅读 ( 710 )
  • 分类:自动测试

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论

分享

立送30金币

Loadrunner Jmeter性能测试