h5页面性能指标解读

1,159 阅读3分钟

H5页面加载过程,主要包括2个部分:H5页面容器加载和资源文件加载。
1、H5页面容器加载过程明细如图: 对照浏览器window下的Performance的数据指标。

H5页面容器各关键点的时耗计算方式如下:

  • 准备耗时 = domainLookupStart - navigationStart;
  • 重定向耗时 = redirectEnd - redirectStart;
  • DNS解析耗时 = domainLookupEnd - domainLookupStart;
  • IP连接耗时 = connectEnd - connectStart;
  • 首包耗时 = responseStart - requestStart;
  • 完整包加载耗时 = 有两种计算方式,如果从网络加载,取值:responseEnd - requestStart;如果加载缓存:responseEnd - fetchStart;(从缓存加载,performance只有responseEnd,fetchStart有值,其他参数值都为0)
  • dom处理 = domComplete - domLoading;
  • 页面白屏时间 = domLoading - navigationStart;
  • 首屏时间 = 取值:loadEventStart- navigationStart; 前端开发也可根据业务侧理解的首屏手动打点tag,取值为:tagTime - navigationStart;
  • 可交互 = domContentLoadedEventEnd - navigationStart;
  • 页面完全加载耗时 = loadEventEnd - navigationStart;

First contentful paint(FCP): 页面开始加载到页面任何一部分内容渲染到屏幕上的实际 Largest contentful paint(LCP): 测量页面从开始加载到最大文本块或图像元素渲染到屏幕上的时间。

白屏 《 首屏《 可交互《 完全加载

2、UIWebView资源文件加载过程如下:

关键点的时耗计算方式如下:

  • 准备耗时 = domainLookup - fetchStart ;
  • DNS解析耗时 = domainLookupEnd - domainLookupStart;
  • IP连接耗时 = connectEnd - connectStart;
  • 首包耗时 = responseStart - requestStart;
  • 完整包加载耗时 = 有两种计算方式,如果从网络加载,取值:responseEnd - requestStart;如果加载缓存:responseEnd - fetchStart;(从缓存加载,performance只有responseEnd,fetchStart有值,其他参数值都为0)。

Performance 数据指标

n["DNS解析时间"] = e.domainLookupEnd - e.domainLookupStart,
n["TCP完成握手时间"] = e.connectEnd - e.connectStart,
n["重定向时间"] = e.redirectEnd - e.redirectStart,
n["html的ttfb耗时"] = e.responseStart - e.requestStart,
n["HTTP请求响应完成时间"] = e.responseEnd - e.requestStart,
n["DOM开始加载前所花费时间"] = e.responseEnd - e.navigationStart,
n["DOM加载完成时间"] = e.domComplete - e.domLoading,
n["DOM结构解析完成时间"] = e.domInteractive - e.domLoading,
n["脚本加载时间"] = e.domContentLoadedEventEnd - e.domContentLoadedEventStart,
n["onload事件时间"] = e.loadEventEnd - e.loadEventStart,
n["页面完全加载时间"] = n["重定向时间"] + n["DNS解析时间"] + n["TCP完成握手时间"] + n["HTTP请求响应完成时间"] + n["DOM结构解析完成时间"] + n["DOM加载完成时间"]

DNS解析流程

  • 0、浏览器DNS缓存,每种浏览器都有一个固定的DNS缓存时间
  • 1、操作系统缓存 ①、本地hosts文件 二、DNS缓存服务 DNSClient
  • 3、本地DNS服务器会递归查找域名记录。如何还没,就本地DNS服务器向根域进行迭代查询
  • 4、本地DNS服务器迭代查询
    • 访问根域获得顶级域名.com的服务(Name server)和ip(address)
    • 访问顶级域名,获取二级域名.xx.com 的Name Server 和address
    • 询问二级域名,获取三级域名 .xx.xxx.com 的Name Server 和address
    • 如果还有四级、五级,则继续递归查找,直到获取真正的ip地址,并且缓存

图中也可以看出递归查询阶段和迭代查询阶段。

主机和本地域名服务器之间的查询方式是递归查询 === 目标服务器要给到答案

DNS服务器之间是采用迭代查询的,避免本身服务器压力过大。 === 只会给本地域名服务器指路

递归查询

迭代查询

dns预解析优化、稳定可靠的DNS服务器

< link  rel="dns-prefetch" href="//www.xxx.net">
< link  rel="dns-prefetch" href="//api.xxx.xxx.net">

tcp网络链路优化,,花钱处理

DNS解析

Performance 看看浏览器在做什么

数据上报: www.jianshu.com/p/04e88271a…