探索Lighthouse性能分数计算背后的奥秘

news2024/11/17 4:54:32

本文作者为 360 奇舞团前端开发工程师

作为开发我们都知道,页面性能很重要,一个性能良好的页面可以给用户带来非常好的用户体验。那么,怎么能知道自己写的页面性能是好是坏呢?

LighthouseChrome提供给开发者用来测量页面性能的工具。通过Lighthouse,我们可以很清楚的看到页面的性能情况。

591e3a4e138a0dc65fe0332140cda7ad.png

当前页面的性能总体得分为96分,是非常优异的。

这个分数是怎么得出来的?这些指标又跟分数有什么样的关系呢?让我们来一探究竟。

Lighthouse性能分数的计算

上图中提到了Lighthouse是基于FCP (First Contentful Paint)SI (Speed Index)LCP (Largest Contentful Paint)TBT (Total Blocking Time)CLS (Cumulative Layout Shift)5个指标来计算性能得分的。

点击“查看计算机”,可以看到以下页面:562ed0c6e395734493bda28937d92fe3.png

页面中包含了性能的指标、数据(value)、得分(Metric Score)以及权重(Weighting),而最终的性能得分就是这些指标分数的加权平均值。即(从上往下开始计算):(100*0.1 + 95*0.1 + 84*0.25 + 100 * 0.3 + 100 * 0.25) / (0.1+ 0.1+ 0.25+0.3+0.25) 约等于 96(四舍五入)。

加权平均值: 即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。点击了解更多

指标的定义

Web指标是Google开创的一项新计划,旨在为网络质量信号提供统一指导,这些信号对于提供出色的网络用户体验至关重要。

指标定义的框架

长久以来,网络性能都是通过load事件进行测量的。但是通过这个事件获取到的数据,跟实际的用户体验并不是很相符。

举个例子:服务器可以通过加载一个“最小”的页面来进行响应,响应完成之后,再通过异步获取主要的页面信息进行展示。通过load事件进行测量,性能上看起来很优秀,但是用户实际上看到页面的时候时间可能变得更长了(因为多了一次请求)。这明显跟真实的用户体验不匹配。

为了能更准确地测量用户的网页性能体验,Chrome团队成员与W3C Web性能工作组共同合作,围绕几个关键问题构建出了指标的框架:115e5143c29ae7f8f06f4716bc2b9fe7.png可以根据这几个点去对指标进行定义,这些都是跟用户息息相关的。

指标类型

用户对性能感知相关的指标可以分为以下几类:

  • Perceived load speed 感知加载速度: 页面在屏幕上加载并渲染出所有视觉元素的速度。

  • Load responsiveness 加载响应度: 为了使组件对用户交互作出快速响应,页面加载和执行任何所需 JavaScript 代码的速度。

  • Runtime responsiveness 运行时响应度: 页面在加载后,对用户交互的响应速度。

  • Visual stability 视觉稳定性: 页面上的元素是否会出现让用户感到意外的偏移,并对用户交互造成潜在的干扰?

  • Smoothness 平滑度: 过渡和动画在页面状态切换的过程中是否具有稳定的帧速率和顺滑的流动性?

通过上述的性能指标类型表明,只用一项指标去捕获页面的所有性能特征是远远不够的。

核心指标

多年来,Google 提供了许多性能测量和性能报告工具,导致一些开发者发现大量的工具和指标令人应接不暇。

开发者想要了解的是他们提供给用户的体验质量是怎样的,并非每个人都需要成为性能专家。我们并不需要去了解所有的指标,只需要专注于一些重点的指标就可以了。

核心Web指标的构成会随着时间的推移而发展 。当前针对2020年的指标构成侧重于用户体验的三个方面——加载性能、交互性和视觉稳定性——并包括以下指标(及各指标相应的阈值):

40514bf973130b753e09900e808d96b5.png

3个指标可以作为网站的一组通用指标,但并不是说我们只需要关注以上这几个核心指标就可以了。在某些情况下,我们将引入新指标来查漏补缺,来捕获完整的性能全貌,能够体现出你网页的真实用户体验才是最佳的指标。

其他一些重要的指标:

  • First contentful paint 首次内容绘制 (FCP):测量页面从开始加载到页面内容的任何部分在屏幕上完成渲染的时间。

  • Time to Interactive 可交互时间 (TTI):测量页面从开始加载到视觉上完成渲染、初始脚本(如果有的话)完成加载,并能够快速、可靠地响应用户输入所需的时间。

  • Total blocking time 总阻塞时间 (TBT):测量 FCP 与 TTI 之间的总时间,这期间,主线程被阻塞的时间过长,无法作出输入响应。

指标阈值定义

标准

在为核心Web指标建立阈值时,Chrome团队首先确定了每个阈值必须满足的标准。

高质量的用户体验
  • 确保满足核心Web指标"良好"阈值的页面能够提供高质量的用户体验。

  • 人类感知和HCI研究,有时会使用单个固定阈值来进行概括,但底层研究中通常会用范围值来表示,聚合和匿名Chrome指标数据也显示出了平滑且连续的分布。所以指标的阈值会用范围值来表示

可通过现有网络内容实现

为了确保网站所有者能够成功地优化他们的网站并满足"良好"阈值,我们要求这些阈值对于网络上现有的内容是可以实现的。

例如,虽然零毫秒是理想的LCP"良好"阈值,并且可以带来即时加载体验,但由于网络和设备处理延迟,零毫秒的阈值实际上在大多数情况下都无法实现。因此,对于核心Web指标来说,零毫秒不是一个合理的LCP"良好"阈值。

"良好"阈值:在评估核心Web指标的候选"良好"阈值时,我们会根据Chrome用户体验报告(CrUX)中的数据验证这些阈值是否可以实现。为了确认一个阈值是可以实现的,要求目前至少有10%的域满足"良好"阈值。

"欠佳"阈值: 通过确定当前只有少数域未能达到的性能水平来建立"欠佳"阈值。除非有"欠佳"阈值定义的相关研究,否则在默认情况下,性能表现最差的 10-30%的域将被归类为"欠佳"。

总结

如果针对某一指标有相关的用户体验研究,并且对文献中的数值范围有合理共识,那么我们会用这个范围作为输入来指导我们的阈值选取过程

在没有相关的用户体验研究的情况下,会对满足不同指标候选阈值的真实世界页面进行评估,从而确定一个能带来良好用户体验的阈值。

在评估候选阈值时,发现这些标准有时会相互冲突。而用户行为指标又显示了行为的逐渐变化,所以通常没有唯一"正确"的指标阈值,有时可能需要从多个合理的候选阈值中进行选择。

示例—— LCP (Largest Contentful Paint) 阈值标准定制

一、体验质量

米勒和卡德的研究将用户在失去注意力之前的等待时间描述为一个从大约0.3秒到3 秒的范围,也就表明我们的LCP"良好"阈值应该在这个范围内。此外,考虑到目前的首次内容绘制"良好"阈值为1秒,并且最大内容绘制通常发生在首次内容绘制之后,可以进一步将LCP候选阈值的范围限制在1秒到3秒之间。

二、可实现性

利用CrUX(Chrome User Experience Report)的数据,我们可以确定网络上满足LCP候选"良好"阈值的域所占的百分比。

aa89c15a7ee170c1e9de1b315b5078b4.png

只有不到10%的域满足1秒阈值,但1.5秒到3秒之间的其他所有阈值也都满足我们的要求,即至少有10%的域满足"良好"阈值,因此这些阈值仍然是有效的候选值。

为了确保所选取的阈值对于优化良好的网站始终都可实现,Chrome团队分析了全网表现最出色的网站的LCP性能,从而确定哪些阈值对于这些网站是始终都可实现的。具体来说,我们的目标是确定一个对于表现最出色的网站来说,始终可以在第75个百分位数实现的阈值。最终发现1.5秒和2秒的阈值并不是始终都可以实现的,而2.5秒的阈值是始终可以实现的。

为了确定LCP的"欠佳"阈值,我们利用CrUX数据来确定大多数域能够满足的阈值:5144a678ca41472d1b8ae4ce488e1efe.png

在阈值为4秒的情况下,大约26%的手机端域和19%的桌面端域将被归类为欠佳。这些百分比落在10-30%的目标范围内,因此,4秒是可接受的"欠佳"阈值。

因此,得出结论,对于最大内容绘制来说,2.5秒是一个合理的"良好"阈值,4秒是一个合理的"欠佳"阈值。

指标分数

一旦Lighthouse收集了性能指标(大多数以毫秒为单位报告),它就会通过查看指标值在其Lighthouse评分分布上的位置,将每个原始指标值转换为0100之间的指标分数。评分分布是从HTTP Archive上真实网站性能数据的性能指标得出的对数正态分布。

例如,最大内容绘制(LCP)衡量用户何时感知到页面的最大内容可见。LCP的指标值表示用户启动页面加载和页面呈现其主要内容之间的持续时间。根据真实网站数据,表现最好的网站在大约1,220毫秒内渲染LCP,因此指标值映射为99分。

HTTPArchive 数据的第25个百分位数变为50分(中值控制点),第8 个百分位数变为90分(良好/绿色控制点)。

指标的权重

性能分数是由指标的加权平均计算出来的,一般来说,权重越高的指标,对性能的得分影响就越大。

为了使用户感知的性能处于一个相对平衡的状态,权重会随着时间而改变。因为Lighthouse团队会定期的进行调研,根据用户的反馈来找出对用户感知的性能影响最大的因素,从而修改指标和权重。

下图为 Lighthouse 10Lighthouse 8的指标及权重变化对比:

64f00189801abaccb4bdac250c9330f3.png

如果想要了解更多可以查看:web性能指标更新记录

结束语

我们通过上述了解了Lighthouse性能得分计算背后的逻辑,没有去了解之前还不知道Chrome团队为了些事情做了大量的工作。通过对用户行为和感知的大量研究、实际的数据及用户反馈来定制和调整标准,有理有据,也更能反馈出实际的情况。只能说是真Niubility

参考资料

Lighthouse performance scoring(https://developer.chrome.com/docs/lighthouse/performance/performance-scoring/)

以用户为中心的性能指标(https://web.dev/user-centric-performance-metrics/#how-metrics-are-measured)

Web 指标(https://web.dev/vitals/#core-web-vitals)

定义核心 Web 指标阈值(https://web.dev/defining-core-web-vitals-thresholds/)

- END -

关于奇舞团

奇舞团是 360 集团最大的大前端团队,代表集团参与 W3C 和 ECMA 会员(TC39)工作。奇舞团非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。

00cc11068a8a316131ae10f33b301609.png

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

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

相关文章

原生js之变量、作用域与内存

原生js之变量、作用域与内存 变量变量类型原始值引用值 复制值传递参数判断类型typeofinstanceof不常用的判断方法constructor构造方法判断Object.getPrototypeOf() 最好用的判断数据类型的方法!toString.call小总结 作用域链垃圾回收标记清理引用计数v8回收v8对GC的优化新生代…

对标8155体验,降本20%以上!这家企业用“量产”证明

智能座舱逐渐成为智能汽车标配。 根据高工智能汽车研究院监测的数据显示,2022年中国市场(不含进出口)乘用车搭载智能数字座舱(大屏语音车联网OTA)前装标配交付795.05万辆,同比增长40.59%,前装搭…

卫星通信链路预算(附程序)

文章目录 简介链路基本概念信息速率与传输速率载波占用带宽载波与噪声功率比 天线参数天线增益波束宽度极化损耗 有效全向辐射功率接收系统品质因数自由空间的传播损耗链路计算程序 简介 卫星通信链路是指从信源开始,通过编码调制及微波上变频、发射机和天线&#…

流量卡不带通话功能,这样的流量卡用着真的安全?

哈喽大家好,很多朋友私信小编,咨询关于纯流量卡的一些问题,可能大家都知道,现在正规的号卡也推出了“纯流量版”,也就是不带通话功能,那么,网上的带手机号的纯流量卡真的用着安全吗?…

企业数字化转型要怎么做?在线报修系统是如何解决维修难题的?

随着科技互联网等新技术的不断发展,企业服务已从信息化迈向数字化阶段。大型企业正迫切地向数字化转型,并需要技术革新和与云的融合,以应对当今市场的挑战。为满足这一需求,广东工程宝科技有限公司推出了一款新一代故障报修产品—…

如何快速搭建一个react项目?如何使用react脚手架快速搭建项目?

如何使用react脚手架快速搭建项目? 一、前提 电脑已经安装了node和npm环境。 react文档中要求Node > 8.10 和 npm > 5.6,查看版本:node -v;npm -v; 二、步骤 1、在合适的文件夹中打开命令行窗口cmd 2、全局安…

前端项目配置 prettier、eslint、lint-stages、husky、commitlint 、style-lint设置代码书写和提交规范

prettier中文网:Options Prettier 中文网 eslint中文网 :ESLint 中文网 github husky : https://github.com/typicode/husky commitlint.js 官网:commitlint - Lint commit messages 、github:GitHub - conventiona…

为什么大力推行国密算法SSL证书

国密算法SSL证书是一种采用我国自主研发的SM2公钥算法体系,支持SM2、SM3、SM4等国产密码算法及国密SSL安全协议的数字证书。相比于普通SSL证书,国密SSL证书具有以下特点: 自主可控:国密SSL证书采用我国自主研发的SM2公钥算法体系&…

十一,从摄像机打印HDR环境贴图

越来越接近真相了。我们很自然地想到,如果把漫游器放在中心打印,是不是就可以打印整个等距柱状投影图了呢?是的,但是,只是要注意的是,立方体贴图的内部和外部尽管一样,但是还是稍微有点模糊&…

Git 学习(2)

Git 学习(2) 版本号 Git 中文件的版本号是 40 位十六进制的数字字符串,采用 SHA-1 加密算法计算获得 这样一方面可避免在合并时的冲突问题 另一方面可以用于文件定位,其中前两位表示文件夹,后 38 位表示文件 指令介…

DDS信号发生器Verilog波形发生器FPGA

名称:DDS信号发生器Verilog波形发生器 软件:Quartus 语言:Verilog 要求: 1.可产生正弦波,锯齿波,三角波,方波4种波形,频率可调 2.具有波形选择、起动、停止功能。 代码下载&…

Flink on yarn 实战和源码分析

版本:1.13.6 目录 Flink on yarn 的3种模式的使用 yarn session 模式源码分析 yarn per-job模式源码分析 application模式源码分析 Flink on yarn 的3种模式的使用 Application Mode # ./bin/flink run-application -t yarn-application ./examples/streaming…

Apollo简易地图制作

在Apollo中模拟障碍物 一、准备工作 在模拟障碍物之前,需要下载并编译Apollo源码,过程可以依据Apollo开放平台文档,其中可能遇到的问题在这里或许可以寻找到答案 二、运行Dreamview 进入容器 cd ~/apollobash docker/scripts/dev_start.s…

515万新作者投身电商事业,抖音电商将投入更多资源扶持作者长期发展

9月27日,2023抖音电商作者峰会在上海举办。上千位抖音电商作者、MCN机构、精选联盟服务商、商家等重要生态伙伴参会,围绕大会主题“向新成长”进行了深入探讨。会上,抖音电商总裁魏雯雯提到,电商作者的事业有更多发展方向。为助力…

输送机使用的常见误区

输送机也称流水线,是指在自动化生产过程中起到运输货物,联通各个生产设备的主要机械设备。但在使用的过程中,很多用户对于输送机的使用存在一定的误区,导致设备故障频出,下面就针对用户已在使用输送机过程中的常见误区…

以太网中的介质共享访问控制机制

什么是CSMA/CD CSMA/CD(Carrier Sense Multiple Access with Collision Detection)是一种用于以太网等共享介质的访问控制机制。它用于协调多个设备共享同一物理介质(例如同一局域网)上的传输权利,以避免碰撞并提供公…

mac安装python2

Python 2 于 2020 年 1 月 1 日宣布结束支持,包括 Homebrew 在内的许多项目和包管理器已经停止支持 Python 2。 如果现在你还要安装 Python 2,需要从 Python 官网下载安装包: 访问 Python 的发布页面。从页面底部找到 Python 2 的最后一个版…

tp8 Editor.md

Editor.md - 开源在线 Markdown 编辑器 放于public文件夹下 html代码&#xff1a; <div class"layui-col-md12" id"content"><textarea name"content" placeholder"详情" class"layui-textarea">{notempty nam…

【Unity的HDRP渲染管线搭建配置VR交互场景_SteamVR 插件和Pico串流助手_经验分享】

HDRP渲染管线配置VR交互场景 Unity创建场景和相关配置下载导入项目打开PICO串流助手在Pico中的配置:用Steam串流VR_这篇的前置补充 Unity创建场景和相关配置 带HDRP Sample Scene 示例的 下载 SteamVR Unity插件地址02 导入项目

GEO生信数据挖掘(二)下载基因芯片平台文件及注释

检索到目标数据集后&#xff0c;开始数据挖掘&#xff0c;本文以阿尔兹海默症数据集GSE1297为例 目录 下载平台文件 1.AnnotGPL参数改为TRUE,联网下载芯片平台的soft文件。&#xff08;国内网速奇慢经常中断&#xff09; 2.手工去GEO官网下载 转换芯片探针ID为gene name 拓…