当前位置:首页 > 科技  > 软件

前端性能指标--首屏时间统计

来源: 责编: 时间:2023-11-28 09:37:16 363观看
导读Part 01 白屏和首屏时间 - 白屏:从用户请求页面开始到显示第一个字符的时间。中间包括DNS查询、建立TCP链接、发送首个HTTP请求、返回HTML文档、HTML文档head解析完毕。通常认为浏览器开始渲染标签或者解析完标签的时

a8g28资讯网——每日最新资讯28at.com

Part 01 白屏和首屏时间 

- 白屏:从用户请求页面开始到显示第一个字符的时间。中间包括DNS查询、建立TCP链接、发送首个HTTP请求、返回HTML文档、HTML文档head解析完毕。通常认为浏览器开始渲染标签或者解析完标签的时刻就是页面白屏结束的时间点。a8g28资讯网——每日最新资讯28at.com

- 首屏:指用户打开网站开始,到浏览器首屏内容渲染完成的时间,对于用户体验来说,首屏时间是用户对一个网站的重要体验因素。a8g28资讯网——每日最新资讯28at.com

Part 02 PerformanceTiming 

performance.timing记录了用于分析页面整体性能指标的关键时间点,包含网络、解析等一系列的时间数据。最好在页面完全加载完成之后再使用,因为很多值必须在页面完全加载之后才能得到。最简单的办法是在window.onload(vm.$nextTick 或 react hooks useEffect)事件中读取各种数据。a8g28资讯网——每日最新资讯28at.com

在浏览器控制台,console输入performance可以查看到performance.timing相关时间节点:a8g28资讯网——每日最新资讯28at.com

a8g28资讯网——每日最新资讯28at.com

图1 performance.timing参数介绍a8g28资讯网——每日最新资讯28at.com

通过PerformanceTiming不仅可以帮助我们省去繁琐的手动打点操作,还可以帮助我们获取很多其他数据,对于整个时间节点的对应关系:下图显示了PerformanceTiming中定义的所有时间戳属性。a8g28资讯网——每日最新资讯28at.com

a8g28资讯网——每日最新资讯28at.com

图2 performance.timing参数说明a8g28资讯网——每日最新资讯28at.com

比较有用的页面性能数据大概包括如下几个:a8g28资讯网——每日最新资讯28at.com

重定向耗时:redirectEnd - redirectStarta8g28资讯网——每日最新资讯28at.com

DNS查询耗时:domainLookupEnd - domainLookupStarta8g28资讯网——每日最新资讯28at.com

TCP链接耗时:connectEnd - connectStarta8g28资讯网——每日最新资讯28at.com

HTTP请求耗时:responseEnd - responseStarta8g28资讯网——每日最新资讯28at.com

解析dom树耗时:domComplete - domInteractivea8g28资讯网——每日最新资讯28at.com

白屏时间:responseStart - navigationStarta8g28资讯网——每日最新资讯28at.com

DOM ready时间:domContentLoadedEventEnd - navigationStarta8g28资讯网——每日最新资讯28at.com

onload时间:loadEventEnd – navigationStarta8g28资讯网——每日最新资讯28at.com

Part 03 MutationObserver API 

MutationObserver API让我们能监听dom树变化,在首屏的加载中,会涉及到dom的增加、修改、删除,所以会触发多次MutationObserver。a8g28资讯网——每日最新资讯28at.com

1)利用MutationObserver监听document对象,每当dom变化时触发回调函数;a8g28资讯网——每日最新资讯28at.com

2)判断监听的dom是否在首屏内,如果在首屏内,将该dom放到指定的数组中,记录下当前dom变化的时间点;a8g28资讯网——每日最新资讯28at.com

3)在MutationObserver的callback函数中,通过防抖函数,监听document.readyState状态的变化;a8g28资讯网——每日最新资讯28at.com

4)当document.readyState === 'complete',停止定时器和 取消对document的监听;a8g28资讯网——每日最新资讯28at.com

5)遍历存放dom的数组,找出最后变化节点的时间,就是首屏加载完成的时间。a8g28资讯网——每日最新资讯28at.com

监听container外层容器的变化,当触发回调函数时,判断对应的事件类型以及新增加的子dom是否是首屏展示的dom节点。a8g28资讯网——每日最新资讯28at.com

a8g28资讯网——每日最新资讯28at.com

尽管现在的MutationObserver在移动端兼容性比较好,但为了更好的兼容,我们可以另外引入MutationEvents API。a8g28资讯网——每日最新资讯28at.com

Part 04 webview里H5页面首屏时间

a8g28资讯网——每日最新资讯28at.com

4.1 WebView初始化阶段

该阶段包括几个主要步骤:a8g28资讯网——每日最新资讯28at.com

(1)开始解析Url(Url中可能包含${}需要解析的字段)a8g28资讯网——每日最新资讯28at.com

(2)完成解析Urla8g28资讯网——每日最新资讯28at.com

(3)开始校验Url是否可以打开a8g28资讯网——每日最新资讯28at.com

(4)结束校验Urla8g28资讯网——每日最新资讯28at.com

(5)开始加载Url到webview容器a8g28资讯网——每日最新资讯28at.com

和家亲app jsbridge提供了getPerformInfo方法可以帮助我们获取WebView性能数据:a8g28资讯网——每日最新资讯28at.com

WebViewUrlLoaded WebView加载url时间:startLoadUrl(开始加载Url到webview容器) - startProcessUrl(开始解析Url);a8g28资讯网——每日最新资讯28at.com

4.2 HTTP请求服务阶段

该阶段包括几个主要步骤:a8g28资讯网——每日最新资讯28at.com

(1) DNS查询a8g28资讯网——每日最新资讯28at.com

(2) 等待 TCP 队列a8g28资讯网——每日最新资讯28at.com

(3) TCP链接a8g28资讯网——每日最新资讯28at.com

(4) 发起http请求和响应a8g28资讯网——每日最新资讯28at.com

(5) 服务器端处理HTTP请求,服务器端处理HTTP请求,浏览器得到html代码a8g28资讯网——每日最新资讯28at.com

(6) 开始head解析a8g28资讯网——每日最新资讯28at.com

该阶段的时间从webview容器开始加载Url开始到完成head解析,可以使用window.performance.timing.responseStart - startLoadUrl(开始加载Url到webview容器)a8g28资讯网——每日最新资讯28at.com

4.3 静态资源下载

该阶段包括几个主要步骤:a8g28资讯网——每日最新资讯28at.com

(1) head解析并开始请求静态资源(如js、css、图片等)a8g28资讯网——每日最新资讯28at.com

(2) 静态资源下载完成a8g28资讯网——每日最新资讯28at.com

(3) 开始解析静态资源a8g28资讯网——每日最新资讯28at.com

该阶段的时间从开始请求静态资源,到开始解析静态资源(比如JS),我们可以在js文件开始自定义JscriptLaunch字段,并赋值给window.preformance对象,(window.PerformInfo || (window.PerformInfo = {})).JscriptLaunch = new Date().getTime(); 以便于我们统计该阶段的时间:window.PerformInfo.JscriptLaunch - window.performance.timing.responseStart。a8g28资讯网——每日最新资讯28at.com

4.4 API调用和首屏dom渲染

该阶段包括几个主要步骤:a8g28资讯网——每日最新资讯28at.com

(1) 开始解析静态资源,请求APIa8g28资讯网——每日最新资讯28at.com

(2) 响应数据a8g28资讯网——每日最新资讯28at.com

(3) 下载资源并渲染doma8g28资讯网——每日最新资讯28at.com

(4) 首屏内容加载完成a8g28资讯网——每日最新资讯28at.com

利用MutationObserver监控DOM的变化,获取首屏dom加载完成的时间,用该时间点减去window.PerformInfo.JscriptLaunch,就获得了该阶段的时间。a8g28资讯网——每日最新资讯28at.com

Part 05 数据上报

将统计到的数据以图片打点、fetch请求或Beacon等形式进行上报,可以帮助我们后续进行分析和优化。a8g28资讯网——每日最新资讯28at.com

5.1 直接发请求上报

直接将数据通过ajax发送到后端有一个问题,就是在页面卸载或刷新时进行上报的话,请求可能会在浏览器关闭或重新加载前还未发送至服务端就被浏览器cancel掉,导致数据上报失败。a8g28资讯网——每日最新资讯28at.com

5.2 利用图片上报

服务器端并不关心具体的数据上报方式,无论是请求image文件还是请求其他普通文件(JS)或者是请求接口,可以进行数据上报。a8g28资讯网——每日最新资讯28at.com

使用image有几个优点:a8g28资讯网——每日最新资讯28at.com

图片的src属性并不会跨域,不会出现跨域问题;a8g28资讯网——每日最新资讯28at.com

大部分浏览器会延迟卸载(unload)文档以加载图像,可以避免第一种方法的问题;a8g28资讯网——每日最新资讯28at.com

只要在js中new出Image对象就能发起请求,不用插入dom中,可以防止阻塞页面加载,影响用户体验;a8g28资讯网——每日最新资讯28at.com

相比PNG/JPG,GIF的体积最小,最适合进行上报,一般采用1*1像素的透明gif进行上报。a8g28资讯网——每日最新资讯28at.com

5.3 css定义content

通过css定义content,按钮点击就会上报,但是不能动态传入一些变量。a8g28资讯网——每日最新资讯28at.com

a8g28资讯网——每日最新资讯28at.com

5.4 Beacon

Beacon可将数据异步发送至服务端,且可能保障在页面卸载实现前发送申请(解决页面卸载会终止请求的问题)。a8g28资讯网——每日最新资讯28at.com

a8g28资讯网——每日最新资讯28at.com

Part 06 总结

页面首屏加载时间是个重要的性能指标,通过上面的方式对首屏时间进行统计分析,可以帮助我们有针对性的进行性能优化。同时页面性能的提升,带给用户更好的产品体验,这样才会得到好的产品反馈,给企业带来价值。a8g28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-34681-0.html前端性能指标--首屏时间统计

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Javascript的闭包有哪些应用?你学会了吗?

下一篇: 一文搞懂Go gRPC服务Handler单元测试

标签:
  • 热门焦点
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • SpringBoot中使用Cache提升接口性能详解

    环境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架从 3.1 开始,对 Spring 应用程序提供了透明式添加缓存的支持。和事务支持一样,抽象缓存允许一致地使用各
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 年轻人的“职场羞耻感”,无处不在

    作者:冯晓亭 陶 淘 李 欣 张 琳 马舒叶来源:燃次元“人在职场,应该选择什么样的着装?”近日,在网络上,一个与着装相关的帖子引发关注,在该帖子里,一位在高级写字楼亚洲金
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
  • 亲历马斯克血洗Twitter,硅谷的苦日子在后头

    文/刘哲铭  编辑/李薇  马斯克再次挥下裁员大刀。  美国时间11月14日,Twitter约4400名外包员工遭解雇,此次被解雇的员工的主要工作为内容审核等。此前,T
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top