# 前端性能优化的关键指标

​ 性能优化的关键指标主要分为加载交互视觉稳定性三个方面,目前大部分公司比较关注的主要是加载指标,交互和视觉稳定性目前还没有成熟的采集方案和性能标准。

# 加载

​ 加载就是进入页面时,页面内容载入的过程。主要关注点在于白屏时间和首屏时间。

# 白屏时间

  • 指的是从输入内容回车(包括刷新、跳转等方式)后,到页面开始出现第一个字符的时间,标准时间是 300ms

  • 导致白屏时间过长的因素

    • DNS 查询时间过长
    • 建立 TCP 请求链接太慢
    • 服务器处理请求速度太慢
    • 客户端下载、解析。渲染时间过长
    • 没有做 Gzip 压缩
    • 缺乏本地离线化处理

# 首屏时间

​ 从浏览器输入地址并回车后,到首屏内容渲染完毕的时间,这期间不需要滚动鼠标或者下拉页面,否则无效。

首屏时间 = 白屏时间 + 渲染时间

​ 首屏时间可以进一步拆解为:白屏时间数据接口响应时间图片加载资源时间等,数据接口响应时间一般可以直接从后端服务中获取,前端不需要重复计算。

首屏时间的度量指标

  • 用户平均首屏加载时间:早期的标准,没有区分 2G / 3G / 4G / WiFi 等不同的网络环境。首屏时间在 1S 内的话,用户会感觉很快;如果首屏时间超过 2.5s 用户会感觉很慢。但是如果是在 1s 内打开页面,500ms 和 800ms 对用户来说没有什么差别,因为人对这么短的时间并不敏感。由于 2G / 3G 等弱网环境会严重影响首屏加载时间这个指标,所以使用平均首屏加载时间作为度量并不可靠
  • 首屏加载时间中位数:做正态分布,看分位值统计。比如P50(50 分位值)、P90(90分位值)、P99(99分位值)。如 P90 意思就是将所有首屏时间排序,排在第 99 位的首屏时间就是 P99。但是这种方式处理也很麻烦,所以后面引入了秒开率这个指标。
  • 秒开率:1S 内打开用户的占比。

# 交互

​ 交互就是用户点击网站或APP的某个功能,页面给出的回应。比如我们点击 star 之后,star 标志会变色,这就是一个良好的交互。

交互的性能指标:

  • FID(First Input Delay):即首次输入延迟,指标必须尽量小于 100ms。
  • PSI(Preceptual Speed Index):即视觉变化率,衡量标准是小于 20%

# 视觉稳定性

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

​ CLS 比较前沿,目前还没有统一的标准,大部分公司很少关注,目前的采集方法只有使用 Google 的 Lighthouse 做本地采集,还没有其他好的方案

例如:

1、当我们准备点击播放按钮时,原来的播放按钮位置突然插入了一条广告,导致我们点击了广告,跳转到广告页面

2、当我们准备点击关闭弹窗时,弹窗突然移动了一段距离,导致我们没有点击到关闭按钮