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

news/2024/7/7 19:34:55/文章来源:https://www.cnblogs.com/csuwujing/p/18282248

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

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

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

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

相关文章

解决Centos无法yum源的问题

1、安装yum依赖包,出现报错could not resolve host :mirrorlist.centos.org:unknown error 此时 #ping mirrors.aliyun.com 不通 一般是由于dns解析存在问题,cd /etc/resolv.conf 修改nameserver 改为114.114.114.114。重启网卡:systemctl restart network 再次 #ping mir…

数据万象盲水印 - AIGC的“保护伞”

近期AIGC的爆火让人们觉得AI似乎无所不能,打工人们已然将 AI 发展成了工作的一大助手,但同样也伴随着很多AI的受害者。一些专家、画家、学者们发现自己的“作品风格”正在被 AI “抄袭剽窃”。导语 近期AIGC的爆火让人们觉得AI似乎无所不能,打工人们已然将 AI 发展成了工作的…

VMware vSphere Tanzu部署_12_下载使用Tanzu-K8S工具

下载使用Tanzu-K8S工具Tanzu-K8S工具支持windows、linux、macoswindows下载安装tanzu-k8s工具访问命名空间内的链接到CLI工具链接将二进制文件复制到windows内的system32文件夹内linux下载安装tanzu-k8s工具 # 192.168.203.194这个IP地址替换为您环境下看到的IP地址 wget --no-…

流程表单设计器开源优势多 助力实现流程化!

流程表单设计器开源的优势特点在哪里?一起在本文中寻找答案吧。实现流程化办公是很多职场企业的发展目标。应用什么样的软件可以实现这一目的?低代码技术平台、流程表单设计器开源的优势特点多,在推动企业降本增效、流程化办公的过程中作用明显,是理想的软件平台。那么,流…

在Cocoa里玩转Dock图标

原文来自;https://cocoa.venj.me/blog/play-with-dock-icon/ 今天我们来看一看如何在Cocoa程序中自定义Dock图标。Dock图标的自定义主要包括四方面:加徽章(Badge) 换图标 隐藏和显示最小化时的图标徽章 增加自定义Dock菜单本文将对如何进行这四方面的自定义进行简单的介绍,…

VMware vSphere Tanzu部署_10_开启Tanzu功能

1.开启Tanzu功能 1.1. Tanzu开启的必要条件网络需要为vds网络或者nsx网络 esxi集群需要开启DRS和HA功能 需要配置Tanzu存储策略 需要部署有负载均衡(nsx或者haproxy或者nsx avi) 需要配置有Tanzu Kubernetes内容库1.2. 初始化Tanzu启用Tanzu功能选择tanzu网络为VDS网络选择需要…

如何计算弧线弹道的落地位置

1)如何计算弧线弹道的落地位置2)Unity 2021 IL2CPP下使用Protobuf-net序列化报异常3)编译问题,用Mono可以,但用IL2CPP就报错4)Wwise的Bank在安卓上LoadBank之后,播放没有声音这是第393篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术…

内推失败!

简历的重要性相信大家都是清楚的,简历的好坏直接决定了面试机会的多少,以及是否有面试机会。 例如,上周我这把一个 92 院校的同学推荐给朋友表哥了,他表哥是某知名电商公司 Leader 级别的人物,他去这个 PDD 已经 5 年了,是位不折不扣的大佬,但推荐的结果却令人感到失望,…

Springboot+Vue加密通信

前言本文旨在给出Springboot+Vue 框架下的加密通信具体实现,同时为照顾非行业内/初学读者,第一小节浅显的解释下加解密方式,老鸟直接跳过。 1 加解密方式常见的加解密方式大概分成对称加密、非对称加密与信息摘要算法三类。下面仅从使用角度简单介绍下加解密方式: 1.1 对称…

VMware vSphere Tanzu部署_09_配置tanzu内容库

配置Tanzu内容库Tanzu内容库订阅地址为:https://wp-content.vmware.com/v2/latest/lib.json如下为配置步骤在vcenter中配置内容库即可

Centos7下安装Redis

1.安装依赖 redis是由C语言开发,因此安装之前必须要确保服务器已经安装了gcc,可以通过如下命令查看机器是否安装:gcc -v如果没有安装则通过以下命令安装:yum install -y gcc2.下载redis安装包并解压# 下载,我是在root下执行的下载,所以我的下载目录为:/root/redis-6.2.6…

Winform SynchronizationContext多线程更新画面控件

SynchronizationContext在通讯中充当传输者的角色,实现功能就是一个线程和另外一个线程的通讯。需要注意的是,不是每个线程都附加SynchronizationContext这个对象,只有UI线程是一直拥有的。故获取SynchronizationContext也只能在UI线程上进行SynchronizationContext context…

复数与复变函数选题

【参考】《复变函数论》钟玉泉编 《复变函数论学习指导书》钟玉泉编

Kubernetes基于helm安装 harbor

Kubernetes基于helm安装 harbor 之前harbor的安装都是借助docker完成一键安装部署,安装完成之后harbor组件均运行到一台机器上面,本文实践harbor在k8s环境中的部署。 准备工作 根据harbor官方要求:Kubernetes cluster 1.20+ Helm v3.2.0+结合ingress-nginx版本要求,建议K8S…

pdf的表格怎么转换成word?

Adobe设计PDF文件格式的目的是支持跨平台、多媒体集成的信息出版和发布,特别是对网络信息发布的支持。为了实现这一目标,PDF具有许多其他电子文件格式无法比拟的优势。如今,越来越多的电子书籍、产品描述、公司通知、网络数据和电子邮件开始使用PDF格式文件。但是PDF却不能直…

高效存储的秘诀:bitmap 数据结构在标签中的应用

在当今大数据和信息爆炸的时代,如何有效地管理和查询海量的数据成为了企业和开发者面临的重大挑战。其中,标签系统作为数据管理中的一种重要手段,被广泛应用于用户画像、商品分类、内容推荐等多个场景。然而,随着标签数量的急剧增加,传统的数据存储和查询方式已难以满足高…

2024年值得收藏的几款开源主机安全系统hids

随着云技术的迅速发展,主机安全系统HIDS作为服务器安全的最后一道防线,无论传统的硬件厂商,还是各大云厂商如阿里、腾讯云非常重视并闷声发大财。HIDS主机安全开源的项目虽多,但能实际用的极少,笔者经过大量搜索,找到以下几款优秀的产品供大家参考: 1、OpenHFWOpenHFW全…

代码随想录算法训练营第四十六天 | 买卖股票的最佳时机

121.买卖股票的最佳时机 题目链接 文章讲解 视频讲解动规五部曲:dp[j][0]: 表示持有股票的最大现金,dp[j][1]表示不持有股票的最大现金 递推公式:第j天持有股票的最大现金为:之前就持有这只股票和今天持有这只股票取最大值: dp[j][0] = max(dp[j-1][0], -prices[j]); 第j天…

Asp.Net Core -Authorizationz授权

授权的内部实现参考 动态授权参考动态授权 基于权限的授权 1.定义权限-Permissionspublic class Permissions{public const string Admin = "Admin";public const string Users = "Users";public const string UserCreate = Users+ ".Create";pu…