前端web性能统计

news2024/11/23 12:25:51

前端web性能统计

  • 1. 背景
  • 2. 业界方案
    • 2.1 腾讯
    • 2.2 蚂蚁金服
    • 2.3 字节跳动
    • 2.4 美团
  • 3. 相关观念
    • 3.1 RAIL模型
    • 3.2 性能指标
    • 3.3 真实用户监控
    • 3.4 performance
  • 4. 性能监控工具介绍
  • 5. 推荐采用方案

1. 背景

在如今的数字时代,网站和应用程序的性能对用户体验至关重要。用户希望快速加载的页面和流畅的交互,而web前端性能监控是确保这一目标实现的关键。了解关键指标有哪些,对优化web前端性能而言至关重要。

2. 业界方案

2.1 腾讯

参考:腾讯前端团队是如何做web性能监控的?

  • Google开发者提出的指标;
  • Lighthouse、PageSpeed等性能检测工具;
  • performance收集用户真实数据;
  • 收费类sdk集成到前端收集用户真实数据;

2.2 蚂蚁金服

参考:蚂蚁金服如何把前端性能监控做到极致?

  • 合成监控(Synthetic Monitoring,SYN),用的Lighthouse
  • 真实用户监控(Real User Monitoring,RUM),使用performance
  • 定义的指标跟Google指标类似

2.3 字节跳动

参考:应用性能前端监控,字节跳动这些年经验都在这了

  • Web Vitals 定义了 LCP、FID、CLS 指标

基于长期以来的体验指标优化积累,最新的核心体验指标主要专注于加载、交互、视觉稳定,加载的速度决定用户是否可以尽早访问到视觉上的图像,可交互的速度则决定用户心理上是否可以尽快感觉页面上的元素可以操作,而视觉稳定性则负责衡量页面的视觉抖动对用户造成的负面影响。

2.4 美团

参考:美团性能分析框架和性能监控平台

  • 主文档加载速度,利用 Navigation Timing API 取得;
  • 静态资源加载速度,利用 Resource Timing API 取得;
  • 首次渲染速度,IE 下用 msFirstPaint 取得,Chrome 下利用 loadTimes 取得,我们的 Chrome 浏览器用户占比超过 70%;
  • 文档生成速度,则是在后端应用内打点来获得;

3. 相关观念

3.1 RAIL模型

参考:使用 RAIL 模型衡量性能

RAIL 的含义是 Response响应、Animation动画、Idle空闲、Load加载,分别代表着 web 应用生命周期的四个不同方面。

RAIL 是一种以用户为中心的性能模型,提供考虑性能的结构。该模型会将用户体验细分为关键操作(例如点按、滚动、加载),并帮助开发者为每项操作定义性能目标。

3.2 性能指标

参考:核心网页指标

Google 开发者针对用户体验,提出的几个性能指标:

  • LCP (Largest Contentful Paint) :最大内容绘制,测量加载性能。为了提供良好的用户体验,LCP 应在页面首次开始加载后的2.5 秒内发生。
  • INP (Interaction to Next Paint):衡量互动。为了提供良好的用户体验,网页的 INP 应不超过 200 毫秒。
  • CLS (Cumulative Layout Shift) :累积布局偏移,测量视觉稳定性。为了提供良好的用户体验,页面的 CLS 应保持在 0.1. 或更少。

在这里插入图片描述

文中还介绍说明了一些 其他指标。

  • FID (First Input Delay) :首次输入延迟,测量交互性。为了提供良好的用户体验,页面的 FID 应为100 毫秒或更短。
  • FCP (First Contentful Paint)首次内容绘制,指标测量页面从开始加载到页面内容的任何部分在屏幕上完成渲染的时间。
  • TTFB (Time To First Byte),是最初的网络请求被发起到从服务器接收到第一个字节这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。

3.3 真实用户监控

真实用户监控是一种被动监控技术,是一种应用服务,被监控的 web 应用通过 sdk 等方式接入该服务,将真实的用户访问、交互等性能指标数据收集上报、通过数据清洗加工后形成性能分析报表。例如 FrontJs、oneapm、Datadog 等。
(遗憾的是这几种sdk基本上都是收费的)

web-vitals也算是真实用户监控的一种。

优点:

  • 是真实用户访问情况。
  • 可以观察历史性能趋势。
  • 有一些额外的功能:报表推送、监控告警等等。

缺点:

  • 有侵入性,会一定程度上响应 web 性能。

3.4 performance

参考: MDN Web Docs 社区 Performance

在讲如何监控之前,先来看看浏览器提供的 performance api,这也是性能监控数据的主要来源。
performance 提供高精度的时间戳,精度可达纳秒级别,且不会随操作系统时间设置的影响。
目前市场上的支持情况:主流浏览器都支持,大可放心使用。

真实用户监控上报的注意事项: 参考文档 如何进行 web 性能监控?

  • 耗时统计使用 performance.now(),而不是 Date(),因为Date会依赖系统时间,修改了系统时间后,统计数据就不对了;更多的是performance从定义开始就是高精度
  • 数据上报使用navigator.sendBeacon,不要用Ajax等其他库,sendBeacon不会阻塞页面或者其他;

4. 性能监控工具介绍

工具适用方式分析
PageSpeed Insights 网页速度测量工具 PSIPSI 可在网页上使用;
也可作为API使用;
并不是通过打点、监控上报的方式,作为页面性能分析工具很强大;
搜索控制台 Google Search Console非常适合用来识别需要改进的特定页面。与 PageSpeed Insights 不同,搜索控制台的报告包括历史性能数据。(针对您拥有并已验证所有权的网站使用搜索控制台)没有尝试
CrUX 仪表板跟PSI类似;同时可以结合一些工具去做数据上报到Google后台。报告包含更多维度,数据可以按设备和连接类型进行细分。维度包括2G/3G等
Web 指标 Chrome 扩展程序直接Chrome启动扩展程序观测;可以进行在本机简单的性能分析;无法查看其他用户和历史数据;
Lighthouse灯塔 推荐扩展程序;命令行工具,可集成到持续集成系统有不少基于这个的收费服务,做监控的;
报告很强大,能产生很多优化建议;
WebPageTest 网页性能测试工具网页上输入网址测试;官网排队等待太慢了
Pingdom不仅提供合成监控,也提供真实用户监控。优点:无侵入性;简单快捷。
缺点:不是真实的用户访问情况,只是模拟的;没法考虑到登录的情况,对于需要登录的页面就无法监控到。
web-vitals (js库)推荐直接在前端项目里加载直接收集指标数据;上报的后端有多种方式;简单的代码开发进行收集上报;在单页面应用上有局限性;

5. 推荐采用方案

针对不同服务带来的不同场景,可参考自身需求选择对应工具,这里推荐如下做法:

  • 使用web-vitals (js库)在前端采集真实用户监控,收集 LCP、INP、CLS
  • 针对性的对关键页面,通过Lighthouse插件手动生成性能报告;

采集指标数据可以还包含以下数据,便于我们更好的分析页面和用户行为的关系:

  • navigator.userAgent 用户浏览器信息
  • navigator.platform 设备
  • location: origin, pathname, hash, href 地址栏信息
  • user用户唯一标识
  • client ip 客户端IP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1926596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人相关工科专业课程体系

机器人相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科,涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论、方…

FOC(笔记二)

接上篇文章:FOC算法(笔记一)_马鞍波和三角波调制合成-CSDN博客 前面已经对FOC的开环控制进行了介绍,下面对FOC的闭环控制进行介绍。 本次使用的电机参数如下图所示: 一、HALL传感器 1.1、霍尔传感器的角度、速度计算 因为本次使用的是120安…

SpringCloud02_consul概述、功能及下载、服务注册与发现、配置与刷新

文章目录 ①. Euraka为什么被废弃②. consul简介、如何下载③. consul功能及下载④. 服务注册与发现 - 8001改造⑤. 服务注册与发现 - 80改造⑥. 服务配置与刷新Refresh ①. Euraka为什么被废弃 ①. Eureka停更进维 ②. Eureka对初学者不友好,下图为自我保护机制 ③. 阿里巴巴…

taro小程序terser-webpack-plugin插件不生效(vue2版本)

背景 最近在做公司内部的小程序脚手架,为了兼容老项目和旧项目,做了vue2taro,vue3taro两个模板,发现terser-webpack-plugin在vue2和vue3中的使用方式并不相同,同样的配置在vue3webpack5中生效,但是在vue2webpack4中就…

【Linux】:重定向和缓冲区

朋友们、伙计们,我们又见面了,本期来给大家带来关于重定向和缓冲区的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精…

【题解】 栈和排序(栈 + 预处理 / 贪心)

https://www.nowcoder.com/practice/95cb356556cf430f912e7bdf1bc2ec8f?tpId196&tqId37173&ru/exam/oj 预处理最大值 #include <climits> // 包含标准整数类型的定义 #include <vector> // 包含标准vector容器的定义class Solution {public:/*** 栈排…

接着探索Linux的世界 -- 基本指令(文件查看、时间相关、打包压缩等等)

话不多说&#xff0c;直接进入主题 一、cat指令 -- 查看目标文件的内容 语法&#xff1a;cat [选项][文件] 功能&#xff1a; 查看目标文件的内容 -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 1、查看目标文件的内容 2、 -b 对非空输出行编号 3、-n 对…

论文浅尝 | 学会使用上下文学习来进行命名实体识别

笔记整理&#xff1a;王润哲&#xff0c;东南大学硕士&#xff0c;研究方向为大模型 链接&#xff1a;https://aclanthology.org/2023.acl-long.764.pdf 1. 动机 实体关系是知识图谱中不可或缺的一层重要信息&#xff0c;它们描述了实体之间的语义关系&#xff0c;这种连接使得…

【填坑指南】PHP8报:Unable to load dynamic library ‘zip.so’ 错误

1.原因分析 这种情况多数发生在PHP安装时因为各种原因失败后&#xff0c;残余的库与最后安装的PHP版本不兼容导致的。 2.我的路径 一开始我按照以前摸索出来的安装PHP7.3的成功经验来编译方法安装PHP8.3&#xff0c;发现以前的套路已经失效了。反复重装PHP8.3失败后&#xf…

Visual Studio 安装程序无法执行修复或更新

一.问题场景 出现问题的场景&#xff1a;当你的VS已经安装但是无法在工具中下载新组件或者卸载了当时一直无法安装。 二.问题原因 如果计算机上的 Visual Studio 实例已损坏&#xff0c;则可能会出现此问题。 三.解决方法 如果之前尝试修复或更新 Visual Studio 失败&…

Qt5离线安装包无法下载问题解决办法

Qt5离线安装包无法下载问题解决办法 文章目录 Qt5离线安装包无法下载问题解决办法1、前言2、Qt5安装包下载办法 更多精彩内容&#x1f449;个人内容分类汇总 &#x1f448;&#x1f449;Qt开发经验 &#x1f448; 1、前言 Qt安装包官方下载地址 Qt5离线安装包目前在国内已经被墙…

Meta即将推出4000亿的Llama 3 超级AI模型,或将改写大语言模型竞争格局!|TodayAI

2024年4月&#xff0c;科技巨头Meta发布了其最新的AI大型语言模型——Llama 3&#xff0c;该模型基于一个至少比前代产品Llama 2大七倍的数据集&#xff0c;展现出前所未有的性能。在最初发布时&#xff0c;Llama 3提供了8B和70B两种参数规模的版本&#xff0c;并迅速超越了Goo…

SpringBoot新手快速入门系列教程十一:自动生成API文档,Springboot3.x集成SpringDoc

本次项目我们用Maven来做&#xff0c;最近发现gradle其实很多项目的支持比较差&#xff0c;所以项目还是用Maven来新建项目。对比了市面上的几种API生成第三方库&#xff0c;只有springdoc 是能够按照文档就能部署出来的。 官网&#xff1a; OpenAPI 3 Library for spring-bo…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(八)-通过无人机进行无线接入

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

C++基础(二十):常见C++11的新特性

1979年&#xff0c;贝尔实验室的本贾尼等人试图分析unix内核的时候&#xff0c;试图将内核模块化&#xff0c;于是在C 语言的基础上进行扩展&#xff0c;增加了类的机制&#xff0c;完成了一个可以运行的预处理程序&#xff0c;称之为C with classes。语言的发展就像是练功打怪…

gd32发送数据,定义参数,接收中断

void usart_receive_data(uint8_t ucch) {usart_data_receive(UART3); } void usart_send_data(uint8_t ucch) {usart_data_transmit(UART3,(uint8_t)ucch);while(usart_flag_get(UART3,USART_FLAG_TBE) RESET); } 这是在c文件中定义函数&#xff0c;之后在h文件中声明&#…

记录些Redis题集(2)

Redis 的多路IO复用 多路I/O复用是一种同时监听多个文件描述符&#xff08;如Socket&#xff09;的状态变化&#xff0c;并能在某个文件描述符就绪时执行相应操作的技术。在Redis中&#xff0c;多路I/O复用技术主要用于处理客户端的连接请求和读写操作&#xff0c;以实现高并发…

eProsima Fast DDS getting started

系列文章目录 文章目录 系列文章目录preface**对象与数据结构**● Publish-Subscriber模块● RTPS模块**配置Attributes** Discovery传输控制前言0、安装cmake安装相关源码安装&#xff1a;- A foonathan_memory_vendor- C fastcdr- D tinyxml2- E asio- F openssl- G fastrtps…

贪心:交换论证法

目录 切蛋糕的最小总开销 切蛋糕的最小总开销 交换论证&#xff1a; 设横切的开销为 h&#xff0c;如果先横切&#xff0c;设需要横切 cnt_h 次。 设竖切的开销为 v&#xff0c;如果先竖切&#xff0c;设需要竖切 cnt_v 次。 先横切&#xff0c;再竖切&#xff0c;那么竖切…

模拟电路再理解系列(3)-共射极放大电路

1.三极管 共射极放大电路的主要器件是三极管&#xff0c;先来梳理一下这个经常见到的元器件 结构 三极管的三个极&#xff1a;基极&#xff0c;集电极&#xff0c;发射极 基极流经的电流来控制集电极和发射极之间的导通和关闭&#xff0c;之前看过一个形象的比喻&#xff0c…