首页 > 其他分享 >web前端应用应该关注哪些性能指标?

web前端应用应该关注哪些性能指标?

时间:2024-07-03 17:57:53浏览次数:19  
标签:web 交互 前端 用户 时间 加载 绘制 性能指标 页面

作为一个有经验的前端开发工程师来说,关注性能是必不可少的一项日常工作,那么应该重点关注一些什么样的性能指标呢?其实主要还是从用户体验的角度来看,一般我们会从页面加载相关、交互相关方面入手。
原文:前端性能指标,一网打尽

FCP:首次内容绘制
LCP:最大内容绘制
TTFB:首字节时间
TBT:总阻塞时间
FMP:首次有效渲染
FP:首次绘制
SI:速度指数
CLS:累积布局偏移
INP:交互到下一次绘制
FID:首次输入延迟
TTI:可交互时间
Core Web Vitals

页面加载相关的指标:

FCP:首次内容绘制 FCP 全称为 First Contentful Paint,即首次内容绘制,表示页面绘制其第一个非白色元素(如文本、图像、非空白 canvas 或 SVG)所需的时间。

image
在 Chrome DevTools 的 Lighthouse 面板中可以测量 FCP 得分:
image
理想的 FCP 时间应控制在 1.8 秒之内:
image


LCP:最大内容绘制 LCP 全称为 Largest Contentful Paint,即最大内容绘制,用于记录视窗内最大的元素绘制的时间,这个时间会随着页面渲染变化而变化,因为页面中的最大元素在渲染过程中可能会发生改变,该指标会在用户第一次交互后停止记录
image

根据规范,LCP 考虑的元素类型包括:

根据规范,LCP 考虑的元素类型包括:
<img> 元素。
<svg> 元素内嵌的 <image> 元素。
<video> 元素。
使用 url() 函数加载背景图片的元素。
包含文本节点或其他内嵌文本元素子元素的块级元素。

在 Chrome DevTools 的 Lighthouse 面板中可以测量 LCP 得分:
image
理想的 LCP 时间应控制在 2.5 秒之内:
image


TTFB:首字节时间 TTFB,全称为 Time to First Byte,即首字节时间,表示从点击网页到接收到第一个字节的时间。TFB 测量的是 startTime 和 responseStart 之间的时间总和:
image

总时间包括:

  • 重定向时间
  • Service Worker 启动时间
  • DNS 查找
  • 连接和 TLS 协商
  • 请求,直到响应的第一个字节到达
    理想的 TTFB 时间应控制在 800 毫秒之内:
    image

这个指标其实很多情况下可能会存在不客观的情况,比如使用了gzip时候,TTFB时间边长了,但是其实整个文件下载的换时间是缩短的。


TBT:总阻塞时间 TBT 全称为 Total Blocking Time,即总阻塞时间,用于衡量的是长任务对主线程的阻塞时间总和。即从首次内容绘制(FCP)到页面达到可交互时间(TTI)期间,主线程因运行长任务而被阻塞的总时间,因此,TBT 会对首次输入延迟有很大影响。长任务是指那些执行时间超过 50 毫秒的 JavaScript 任务,因为它们可能会阻塞页面的渲染和响应,从而影响用户体验。
在 Chrome DevTools 的 Lighthouse 面板中可以测量 TBT 得分:
image


FMP:首次有效渲染 FMP 全称为 First Meaningful Paint,即首次有效渲染。它衡量的是从用户开始加载页面到浏览器首次渲染出对用户来说有意义的内容(如文本、图片、按钮等可交互元素)所花费的时间。

FMP 的计算比较复杂,因为它涉及到“有意义”内容的定义。在实际应用中,通常需要根据具体的应用场景和用户需求来确定哪些内容被认为是“有意义”的。


FP:首次绘制 FP 全称为 First Paint,即首次绘制,表示浏览器首次将像素渲染到屏幕上的时间点。在性能统计指标中,从用户开始访问 Web 页面的时间点到FP的时间点这段时间可以被视为白屏时间,即用户看到的都是没有任何内容的白色屏幕。FP 指标反映了页面的白屏时间,白屏时间的长短直接影响了用户的体验和满意度。

首次绘制与其他性能指标如 First Contentful Paint (FCP) 和 Largest Contentful Paint (LCP) 相关但有所不同:

  • FCP(首次内容绘制):指的是页面首次绘制文本或图像的时间点,通常在 FP 之后发生,因为它涉及到更具体的页面内容。

  • LCP(最大内容绘制):指的是页面上最大的文本块或图像元素完成绘制的时间点,它关注的是页面主要内容的可见性。

image


SI:速度指数 SI 全称为 Speed Index,即速度指数,用于衡量页面渲染用户可见内容迅速程度。Speed Index 并不是一个具体的时间点,而是一个综合性指标。它表示页面从加载开始到页面内容基本可见的过程中,用户感受到的加载速度。该指标是基于视频捕获的可视进度或从绘制事件的可视进展来计算。

一般来说,在移动设备上,Speed Index 低于 3.4s,在桌面上低于 1.3s 时,Lighthouse 才能获得 90 以上的评分。

image


交互相关指标

CLS:累积布局偏移 CLS 全称为 Cumulative Layout Shift,即累积布局偏移,用于衡量一个页面在加载过程中,由于内容的加载和渲染,导致页面布局发生多次变化的情况。具体来说,CLS 指标衡量的是页面中可见元素在加载过程中由于内容加载而发生的位置偏移。

注意:只有意外的布局变化才会计入 CLS 分数。如果内容在用户交互(例如点击)后移动,则不会增加 CLS。
在 Chrome DevTools 的 Lighthouse 面板中可以测量 CLS 得分:

image

CLS 的值范围通常是从 0 到 1,其中 0 表示没有布局偏移,1 表示布局偏移非常严重。一个较低的 CLS 值意味着页面在加载过程中布局稳定,用户可以更流畅地浏览页面。
理想的 CLS 时间应控制在 0.1 之内:
image

CLS 分数是通过将影响分数与距离分数相乘来计算的,其中:
影响分数:视口中会移动的不稳定元素的总面积占比。如果页面加载过程中有覆盖视口 60% 面积的元素移动了,那么影响分数就是 0.6。
距离分数:视口中任何单一元素移动的最大距离与视口高度的比值。假设一个元素从位置(0, 100)移动到(0, 500),这导致了 400px 的垂直偏移。如果视口的高度是 1000px,那么距离分数就是 400px / 1000px = 0.4。
则累积布局偏移分数是 0.6 x 0.4 = 0.375


INP:交互到下一次绘制 INP 全称为 Interaction to Next Paint,即交互到下一次绘制,用来衡量用户与网页交互后,浏览器完成下一次屏幕绘制所需的时间。这个指标主要关注的是用户交互(如点击、触摸、键盘输入等)之后,页面响应并渲染新内容的速度。

INP 会测量以下延迟:
输入延迟:用户交互和浏览器能够处理事件之间的时间,类似于 FID。
处理延迟:浏览器处理事件处理程序所需的时间
显示延迟:浏览器重新计算布局并将像素绘制到屏幕上所需的时间。

image
理想的 INP 时间应控制在 200 毫秒之内:
image

对于 INP,只观测以下互动类型:
使用鼠标点击。
点按带有触摸屏的设备。
实体键盘或屏幕键盘键。


FID:首次输入延迟 FID 全称为 First Input Delay,即首次输入延迟,是衡量网页性能的一个重要指标,它反映了用户在页面加载过程中首次与页面交互时的体验。FID 特别关注用户首次点击按钮、链接、输入字段等可交互元素时,页面响应这些交互所需的时间。

FID 仅测量输入延迟,即用户输入和浏览器开始执行事件处理程序之间的时间。
image
INP 是 FID 的继任指标。虽然两者都是响应能力指标,但 FID 仅测量了页面上首次互动的输入延迟,而 INP 则通过考虑所有页面互动(从输入延迟到运行事件处理程序所需的时间,再到浏览器绘制下一帧)来改进FID。这使得 INP 成为更可靠的整体响应能力指标。


TTI:可交互时间 TTI 全称为 Time To Interactive,即可交互时间,用于评估页面从开始加载到用户可以顺畅地与之交互的时间点。TTI 特别关注页面的响应性和交互性,它试图捕捉用户能够开始与页面进行流畅交互的瞬间。

TTI 时间主要取决于以下因素:
页面布局稳定,所有可见的内容都已经被加载。
主线程空闲。如果还在加载脚本或处理其他任务,那么应用将不会处于交互状态。用户的点击和其他操作将被忽略(或排队)直到线程空闲。

Core Web Vitals

Core Web Vitals 是一组由Google推出的关键用户体验指标,旨在帮助开发人员评估和优化网站的性能。这些指标主要关注三个方面:加载性能、交互性能和视觉稳定性。分别对应三个指标:LCP(Largest Contentful Paint)、 INP(Interaction to Next Paint) 、CLS(Cumulative Layout Shift)
image

标签:web,交互,前端,用户,时间,加载,绘制,性能指标,页面
From: https://www.cnblogs.com/csuwujing/p/18282248

相关文章

  • 前端如何优雅的添加水印及去除水印
    ......
  • 教你从零开始制作一个Web蜜罐扫描器
    01想法的来源在渗透的过程中,会遇到很多蜜罐,一旦不小心踩了蜜罐,就会被溯源,所以很可怕。为了规避上面的现象,就需要把蜜罐筛出来。使用场景是在前期资产收集的过程中,搞到了一堆子域名,先筛掉一批蜜罐,留下可以攻击的纯净资产。同上得到的一份资产如下:如上图所示,大量的域名如......
  • 详解Web应用安全系列(6)安全配置错误
    Web攻击中的安全配置错误漏洞是一个重要的安全问题,它涉及到对应用程序、框架、应用程序服务器、Web服务器、数据库服务器等组件的安全配置不当。这类漏洞往往由于配置过程中的疏忽或错误,使得攻击者能够未经授权地访问系统数据或执行系统功能。安全配置错误类漏洞是指在对Web应用......
  • CentOS Stream 8 发布.net 8 webapi
    参考资料https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-rhel#where-is-centos-linux 微软好像不持支.net7所以把demo换成.net8sudodnfinstalldotnet-sdk-8.0 然后就开始报错,大致意思就是无法解析,找不到地址资源进入yum的repos目录cd/etc/yum.rep......
  • 保持校园网自动登录的代码备忘: 基于webdriver和chrome
    在跑一个处理很多数据的代码,需要不间断地运行。而且最近打算回家一周,需要远程控制电脑。但是学校的校园网每到晚上就会自己断开,干脆写份脚本来保持校园网的连接这份简单的代码只包括三个部分,检测网络状态的部分,自动登录校园网的部分,循环执行的部分、importosimporttimeimpo......
  • OpenSpace Web3课程大纲
    这个OpenSpaceWeb3BootCamp区块链技术线下集训营培训的内容看起来不错,比较全面也比较深入,但我没有金钱和时间,而且似乎这个面向的应该是即将毕业的应届生,2个月脱产应该没多少工作的人参加,除了一些处于gap期的吧。年轻真好。不管怎样,在这里列一下这个培训的大纲,作为参考。夯实基......
  • 应对Web安全防护,溯源追踪攻击者。
    前言随着时代的进行,互联网站走进千家万户,网络安全问题也逐渐提上日程,国家对网络安全也欲加重视。一、重视保护现如今,大数据已成为必要发展趋势。Web网站也成为人们获取信息和企业开放产品的重要行式。提到网站,就不得不提到Web安全。仍有许多企业不重视,不在乎Web安全,只要求......
  • 打印功能实现--web端+移动端
    web端---调用本机的打印机即可 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>PrintCustomContentandStyle</title><style>@mediaprint{/*打印时隐藏页面中的元素*/#header,#footer{......
  • JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI
    JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI孕产妇健康管理信息管理系统是一种将孕产妇健康管理信息进行集中管理和存储的系统。通过建立该系统,有助于提高孕产妇健康管理的效率和质量,减少医疗事故发生的可能性,管理医疗资源,保证孕产妇得到及时、准确的医疗服务。该系......
  • 搭建工程之一 eclipse 中基于 maven 的 webapp工程能基于tomcat运行
    一、背景  作为开发人员,开发的web(运行在tomcat容器中)希望能够在本地开发工具(eclipse)中运行调试,加快开发测试进度。二、操作步骤1、创建maven工程 在eclipse上右键,选择"New"---"Other"---"Maven"----"MavenProject" 勾选上“Createasimpleproject”......