news 2026/4/30 12:54:20

前端性能优化之性能指标篇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端性能优化之性能指标篇

1、常见性能指标

  • FP(First Paint - 首次绘制):页面首次绘制的时间点,即第一个像素绘制到屏幕上的时间点。
  • FCP(First Contentful Paint - 首次内容绘制):页面首个内容绘制到屏幕上的时间点,这里的内容包括文本、图片等。
  • LCP(Largest Contentful Paint - 最大内容绘制):可视区域内最大的元素加载的时间点。这里的“最大”指的是从几何属性(可视尺寸)来计算,绘制面积最大的那个元素。
  • FID(First Input Delay - 首次输入延迟) 与 INP(Interaction to Next Paint):页面首次交互(点击链接、按钮等)到浏览器实际响应的延迟。以前该指标用FID来衡量,但目前已经被INP取代,它们之间的区别是,FID 只衡量“第一次”交互,而 INP 会观察整个页面所有交互事件,并报告一个较差或最高的数值,这样更能反应出页面的整体响应性。
  • CLS(Cumulative Layout Shift - 累积布局偏移):在页面生命周期当中,累计的意外布局偏移总分数。
  • TTFB(Time to First Byte):浏览器从发起请求到接收到服务器响应数据的首字节所花费的时间。

2、需要关注什么样的指标?

上面列出了那么多指标,那么在实际衡量前端项目性能时,我们究竟应该关注些什么指标呢?

我们可以从这几方面入手:

  • 可衡量。就是可以通过代码计算拿到的指标,即可以用代码来衡量,无法衡量也就无法优化。
  • 用户关心的关键信息。比如用户进入了一个商品详情页,他最关心的是这个商品是怎样的,包括商品头图、商品描述、商品价格、购买按钮等关键信息。
  • 用户的真实体验。比如用户在列表中滑着滑着,突然弹出一个广告弹窗,用户就会觉得体验很差。

3、加载性能指标

3.1 白屏时间

白屏时间是指用户输入内容按下回车(也包括刷新、跳转等方式)后到页面出现第一个字符的时间,其标准是 300 ms

影响白屏时间的因素如下

  • 在客户端请求阶段,DNS查询时间长,没利用好本地缓存,HTTP请求阻塞等。
  • 在服务端处理请求阶段,服务器处理请求速度太慢,包括数据库查询慢、没做数据缓存、没开启Gzip压缩等。
  • 在客户端渲染阶段,HTML解析慢、script阻塞、资源加载慢、渲染时间长等。
  • 用户本地网络慢,以及缺乏本地离线化处理等。

3.2 首屏时间

首屏时间指的是用户看到当前页面(第一屏)被完全加载出来的时间点。首屏时间 = 白屏时间 + 首屏渲染时间

首屏时间的标准不是定死的,而是根据当前系统对时间是否敏感来决定的,比如 C 端系统 PC官网、H5 页面等,对首屏要求较高,而像 B 端管理后台,对首屏时间就没那么敏感,而且一般企业内部用的系统,其访问的网络环境一般都比较稳定,所以对首屏时间要求会低一些。

具体时间可以参考如下表

类别较快很慢指标示例
时间敏感<1s1s ~ 1.5s1.5s ~ 2.5s>2.5s首屏、白屏
时间不敏感<2s2s ~ 4s4s ~ 8s>8sonload
最佳:白屏 < 1s,首屏 < 1.5s,onload < 3s。

一般来说,首屏时间在 1s 内,给用户的感觉就是非常流畅,在 1s 内的话,无论是 300ms 还是 500ms,其实用户感觉不出来太大的差别,但是如果首屏时间超过 2.5s,用户感觉就会很慢,体验很差,用户流失率也会嘎嘎往上升。

3.3 秒开率

我们可以用首屏时间来衡量单个用户的首屏体验,但是如果把很多用户的首屏时间都收集上来了,如何衡量整个系统的首屏体验呢?

  • 平均值:平均值就是所有用户首屏时间的总和除以用户数,但是平均值有个致命的缺点,就是容易被极端值影响,比如有 10 个用户,其中 9 个用户首屏时间都在 1s 内,而第 10 个用户首屏时间在 10s 内,那么平均值就会变成 5s,这个结果显然是不合理的。
  • 中位数。可以将所有数据做正态分布,看分位值统计。比如 P50(50分位值)、P90(90分位值)、P99(99分位值),这个值是怎么计算出来的呢?以 P99 为例,先把所有首屏数据先排好序,排在第 99 位的数据就是 P99,但这样还是比较麻烦。于是引入了秒开率的概念。
  • 秒开率:指的是 1s 内打开的用户占比。比如 10 个用户,1s 内能加载完首屏的用户有 8 个,那秒开率就是 80%。

按照秒开率的概念,我们可以建立如下的首屏时间标准

类型首屏时间秒开率1.5秒开率2秒开率
SSR(服务端渲染)1000ms80%95%98%
端内(Hybrid 环境)1200ms65%85%90%
端外(浏览器环境)1500ms40%60%80%

4、交互性能指标

交互指的就是人机交互,比如用户点击了按钮后,网站立马给予一定的回应,包括跳转、弹窗、动画等,那就是用户体验好,但如果用户点击了按钮后,网站半天没有任何反应,那给用户的体验就很差。

衡量交互指标的方式主要用两种

  • FID 指标(First Input Delay,首次输入延迟),指标必须尽量小于 100 ms。但文章开头也介绍过,现在 FID 指标已经被 INP 取代。
  • PSI(Perceptual Speed Index,视觉变化率),衡量标准是小于 20%。

5、视觉稳定性指标

视觉稳定性用 CLS(Cumulative Layout Shift) 来衡量,CLS 也就是布局偏移量,它是指页面从一帧切换到另外一帧时,视线中不稳定元素的偏移情况。

比如在一个商品详情页中,用户在想点击商品图片放大仔细查看图片内容,但是突然图片上方渲染出了一条广告,把图片顶到页面底部去了,这个就是不稳定元素,给用户的体验非常差。

小结

常用的性能指标包括FPFCPLCPFIDINPCLSTTFB等,而在实际前端项目优化中,我们往往比较关注加载性能指标、交互性能指标和视觉稳定性指标,加载性能指标包括白屏时间和首屏时间,而为了更好的衡量首屏时间对于用户的整体效果,我们引入了秒开率的概念,也就是 1s 内打开的用户占比,秒开率越高,整体用户体验越好。

往期回顾

  • 前端性能优化之性能瓶颈点,Web 页面加载全流程解析
  • 前端性能优化之Webpack篇
  • 前端性能优化之CSS篇
  • 前端遇到页面卡顿问题,如何排查和解决?
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:39:42

Keil MDK下载与项目创建完整示例

手把手搭建Keil MDK开发环境&#xff1a;从下载到STM32点灯实战 你有没有遇到过这样的情况&#xff1f;刚拿到一块STM32最小系统板&#xff0c;满心欢喜地打开电脑想写个“LED闪烁”程序&#xff0c;结果卡在第一步—— Keil MDK怎么下载&#xff1f;安装完却提示找不到芯片&…

作者头像 李华
网站建设 2026/4/24 14:44:49

WezTerm效率提升与个性化主题定制终极指南

WezTerm效率提升与个性化主题定制终极指南 【免费下载链接】wezterm A GPU-accelerated cross-platform terminal emulator and multiplexer written by wez and implemented in Rust 项目地址: https://gitcode.com/GitHub_Trending/we/wezterm 作为一名资深开发者&…

作者头像 李华
网站建设 2026/4/23 13:14:49

收藏!AI焦虑下程序员必看:大模型要不要学?零基础系统入门指南

最近技术圈里的“AI焦虑”搞得人心惶惶&#xff0c;“大模型”、“替代程序员”等词频频刷屏。 很多人疑问&#xff1a;浪潮之下&#xff0c;程序员到底要不要掌握AI大模型能力&#xff1f;不会饭碗还能保住吗&#xff1f; 其实大部分人还在死守老一套&#xff0c;而身边有的同…

作者头像 李华
网站建设 2026/4/23 14:38:31

为什么超过10万用户选择这款极简推特主题来提升专注力?

为什么超过10万用户选择这款极简推特主题来提升专注力&#xff1f; 【免费下载链接】minimal-twitter Minimal Theme for Twitter - Refine and Declutter Your Twitter Web Experience 项目地址: https://gitcode.com/gh_mirrors/mi/minimal-twitter 你是否曾在浏览推特…

作者头像 李华
网站建设 2026/4/29 6:40:25

如何从0开始挖到第一个漏洞?

如何从0开始挖到第一个漏洞&#xff1f; 本人从0开始挖到第一个漏洞的经验总结&#xff0c;附用过的视频教程和学习笔记&#xff01; &#x1f308; 今天给大家分享我从0到挖到第一个漏洞的经验总结&#xff0c;避开了我当时走的很多弯路&#xff0c;希望能帮各位想学网安的朋…

作者头像 李华