当前位置: 首页 > news >正文

【简单版】通过 Window.performance 实现前端页面(性能)监控

1 背景

前端监控系统告警xx接口fetchError
问题:前端监控系统没有更多的错误信息,查询该fetch请求对应的接口日志返回200状态码、无请求异常记录,且后台能查到通过该fetch请求成功发送的数据。那是前端页面的错误还是前端监控系统的问题?如何证明?

2 思考

在前端测获取页面 fetch 请求信息(通过 Window.performance 访问窗口中运行的代码的性能信息;Window.performance.getEntries()可以拿到 fetch 请求信息,但是拿不到Axios请求信息),然后通过埋点将页面性能信息上报。

3 performance相关知识

在这里插入图片描述
在这里插入图片描述

4 上代码

  • 注意:加try catch
  /*** @returns 上报当前页面资源情况*/reportPerformance () {try {const params = {resource: window.performance.getEntries(),network: deepCopy(window.navigator.connection),pagePerformance: window.performance.toJSON(),}if (window.performance?.memory) params.memory = new Memory()return this.report('performance', params)// 调用埋点上报的方法} catch (e) {return this.report('fe_error', { message: e?.message, stack: e?.stack })}}
  • 上报的params结果贴出来
    在这里插入图片描述在这里插入图片描述

fetchStart:返回浏览器准备使用HTTP请求读取文档时的Unix毫秒时间戳。该事件在网页查询本地缓存之前发生。
domInteractive:返回当前网页DOM结构结束解析、开始加载内嵌资源时(即Document.readyState属性变为“interactive”、相应的readystatechange事件触发时)的Unix毫秒时间戳。
domContentLoadedEventEnd:返回当前网页所有需要执行的脚本执行完成时的Unix毫秒时间戳。

  • 使用示例
  1. 计算某fetch请求的请求时间:
    performance的fetchStart + performance.getEntries()的fetch请求的startTime
new Date(1728720141830 + 726.1000000238419)
  1. 计算白屏时间(用户看到页面展示出现一个元素的时间):
    可以直接采用performance的 domInteractive - fetchStart 获取耗时,此时页面资源加载完成,即将进入渲染环节。
    在这里插入图片描述
  2. 计算首屏时间
    首屏时间是指页面第一屏所有资源完整展示的时间。这是一个对用户来说非常直接的体验指标,但是对于前端却是一个非常难以统计衡量的指标。可以使用performance的 domContentLoadedEventEnd - fetchStart 获取耗时,此时页面DOM树已经解析完成并且显示内容

参考

MDN - Performance

http://www.lryc.cn/news/464037.html

相关文章:

  • 微信小程序考试系统(lw+演示+源码+运行)
  • 手机摄影入门
  • 微信小程序手机号授权获取(aes加密手机号)
  • asyn queueRequest使用实例
  • 关于jmeter设置为中文问题之后无法保存设置的若干问题
  • 基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率
  • 背景全文及翻译
  • JAVA地狱级笑话
  • 宝塔PHP8.1安装fileinfo拓展失败解决办法
  • Python 魔术方法
  • 03 go语言(golang) - fmt包基本类型
  • Docker本地镜像发布到阿里云镜像服务的简易指南
  • 大数据学习---快速了解clickhouse数据库
  • 哪些方法可以缓解面试紧张?
  • 即时通讯未读消息计数
  • 在Openshift(K8S)上通过EMQX Operator部署Emqx集群
  • Python酷玩之旅_数据分析入门(matplotlib)
  • uiautomatorviewer安卓9以上正常使用及问题处理
  • Go语言gRPC快速入门
  • Golang | Leetcode Golang题解之第479题最大回文数乘积
  • UDP协议讲解
  • 交叉注意力融合时域、频域特征的FFT + CNN -BiLSTM-CrossAttention轴承故障识别模型
  • CSDN Markdown 编辑器语法大全
  • TCP/IP 协议【四次挥手】简要说明
  • 第11篇:网络安全协议
  • ES-入门-javaApi-文档-新增-删除
  • 【视频生成大模型】 视频生成大模型 THUDM/CogVideoX-2b
  • 【MR开发】在Pico设备上接入MRTK3(三)——在Unity中运行MRTK示例
  • C#中委托的应用与示例
  • 算法: 模拟题目练习