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

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

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

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

Part 01 白屏和首屏时间 

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

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

Part 02 PerformanceTiming 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Part 03 MutationObserver API 

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

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

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

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

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

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

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

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

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

Part 04 webview里H5页面首屏时间

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

4.1 WebView初始化阶段

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

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

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

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

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

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

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

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

4.2 HTTP请求服务阶段

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

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

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

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

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

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

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

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

4.3 静态资源下载

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

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

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

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

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

4.4 API调用和首屏dom渲染

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

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

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

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

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

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

Part 05 数据上报

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

5.1 直接发请求上报

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

5.2 利用图片上报

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

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

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

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

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

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

5.3 css定义content

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

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

5.4 Beacon

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

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

Part 06 总结

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

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

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

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

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

标签:
  • 热门焦点
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 六大权益!华为8月服务日开启:手机免费贴膜、维修免人工费

    8月5日消息,一年一度的华为开发者大会2023(Together)日前在松山湖拉开帷幕,与此同时,华为8月服务日也式开启,到店可享六大专属权益。华为用户可在华为商城Ap
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
Top