前端web性能统计

前端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.mzph.cn/pingmian/46314.shtml

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

相关文章

STM32MP135裸机编程:唯一ID(UID)、设备标识号、设备版本

0 资料准备 1.STM32MP13xx参考手册1 唯一ID(UID)、设备标识号、设备版本 1.1 寄存器说明 (1)唯一ID 唯一ID可以用于生成USB序列号或者为其它应用所使用(例如程序加密)。 (2)设备…

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

0.单片机工作原理

文章目录 最小系统 单片机芯片 时钟电路 复位电路 电源 最小系统 单片机芯片 本次51单片机的芯片为:STC89C52 Flash(闪存)程序存储器:存储程序的空间 SRAM:数据存储器,可用于存放程序执行的中间结果和过程数据 DPTR:…

2024-07-14 Unity插件 Odin Inspector2 —— Essential Attributes

文章目录 1 说明2 重要特性2.1 AssetsOnly / SceneObjectsOnly2.2 CustomValueDrawer2.3 OnValueChanged2.4 DetailedInfoBox2.5 EnableGUI2.6 GUIColor2.7 HideLabel2.8 PropertyOrder2.9 PropertySpace2.10 ReadOnly2.11 Required2.12 RequiredIn(*)2.…

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

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

Linux编程(三)—makefile快速编译

起因 linux环境下,编译c程序很麻烦,后面g -o demo demo.cpp ……往往跟了许多许多东西,这些每次编译的时候都要书写,所以就产生了makefile快速编译方式,具体操作如下。 怎么用makefile? 第一步:下载 m…

WPF学习(2) -- 样式基础

一、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008&…

MySQL 聚簇索引和非聚簇索引有什么区别?

聚簇索引&#xff08;主键索引&#xff09;、非聚簇索引&#xff08;二级索引&#xff09;。 这两者之间的最主要的区别是 B 树的叶子节点存放的内容不同&#xff1a; 聚簇索引的 B 树叶子节点存放的是主键值完整的记录&#xff1b;非聚簇索引的 B 树叶子节点存放的是索引值主…

【面试八股总结】C++内存管理:内存分区、内存泄漏、new和delete、malloc和free

参考资料&#xff1a;代码随想录、阿秀 一、内存分区 &#xff08;1&#xff09;栈区 在执行函数时&#xff0c;函数内部局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中&#xff0c;效率很高&am…

Postman下载及使用说明

Postman使用说明 Postman是什么&#xff1f; ​ Postman是一款接口对接工具【接口测试工具】 接口&#xff08;前端接口&#xff09;是什么&#xff1f; ​ 前端发送的请求普遍被称为接口 ​ 通常有网页的uri参数格式json/key-value请求方式post/get响应请求的格式json 接…

关闭Ubuntu烦人的apport

先来看让人绷不住的&#xff08;恼&#xff09; 我查半天apport是啥玩意发现就一错误报告弹窗&#xff0c;十秒钟给我弹一次一天给我内存弹爆了 就算我程序就算真的不停崩溃&#xff0c;也没你这傻比apport杀伤性强啊&#xff1f;&#xff1f;&#xff1f; 原则上是不建议关闭…

牛客周赛 Round 51 解题报告 | 珂学家

前言 题解 典题场&#xff0c; EF都有很多种解法 A. 小红的同余 性质: 相邻两数互质 x ( m 1 ) / 2 x (m1)/2 x(m1)/2 m int(input())print ((m 1) // 2)B. 小红的三倍数 性质: 各个位数之和是3的倍数&#xff0c;可被3整除 和数的组合顺序无关 n int(input()) arr…

MySQL高级面试点

Explain语句结果中各个字段分别代表什么 id&#xff1a;查询语句没出现一个select关键字&#xff0c;MySQL就会给他分配一个唯一id select_type&#xff1a; select关键字对应哪个查询的类型 simple&#xff1a;简单的查询 不包含任何子查询 primary&#xff1a;查询中如果…

网络安全设备——EDR

网络安全中的EDR&#xff08;Endpoint Detection and Response&#xff0c;端点检测与响应&#xff09;是一种主动式的端点安全解决方案&#xff0c;它专注于监控、检测和响应计算机和终端设备上的安全威胁。以下是EDR的详细解释&#xff1a; 一、定义与功能 EDR是一种网络安…

repo sync同步出错解决

当出现下面提示时 e list of known hosts. Fetching: 100% (1167/1167), done in 44.619s info: A new version of repo is available warning: repo is not tracking a remote branch, so it will not receive updates Repo command failed: RepoUnhandledExceptionError …

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意&#xff1a;Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

025-GeoGebra中级篇-曲线(1)_显式曲线、隐式曲线、参数曲线

写到曲线这一章节&#xff0c;不得不先梳理一下数学中关于曲线这一部分的内容&#xff0c;我们常见的曲线有显式曲线、隐式曲线、参数曲线&#xff0c;当然还有极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、和非线性动力系统的轨迹&#xff0…

在 PostgreSQL 里如何实现数据的分布式事务的回滚和补偿机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的分布式事务的回滚和补偿机制一、分布式事务的概念与挑战&#xff08;一…

STM32智能农田监测系统教程

目录 引言环境准备智能农田监测系统基础代码实现&#xff1a;实现智能农田监测系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;农田监测与管理问题解决方案与优化收尾与总结 1. 引言 智能农田监测系统通…

【LeetCode 链表合集】

文章目录 1. LeetCode 206 反转链表2. NC40 链表相加 1. LeetCode 206 反转链表 题目链接&#x1f517; 解题思路&#xff1a; &#x1f50d; &#x1f427;创建一个新的节点&#xff0c;使用链表头插的方法&#xff1b; 2. NC40 链表相加 题目链接&#x1f517; 解题思路…