关于前端如何知晓页面性能的方法

186 阅读4分钟

前言

在平时开发中,总会想要看看项目的性能情况,所以本文收集十种方案,以供平时复盘使用。

有几个指标需要在本文前了解:

  1. CLS (Cumulative Layout Shift) - 累积布局偏移: CLS 衡量了网页上元素布局变化的稳定性。它是一个0到1之间的分数,其中0表示没有布局变化,1表示最差的布局稳定性。较低的 CLS 分数表示更好的用户体验,因为页面元素不会突然移动或跳动,导致用户误操作。
  2. FID (First Input Delay) - 首次输入延迟: FID 衡量了用户首次与页面互动(例如,点击链接或按钮)后到页面实际响应互动的时间。较低的 FID 表示更快的响应时间,增强了用户体验。
  3. FCP (First Contentful Paint) - 首次内容绘制: FCP 是用户首次看到页面上有实际内容呈现的时间点。这包括文本、图像或其他元素的显示。较短的 FCP 时间通常表示更快的加载速度和更好的用户体验。
  4. FP (First Paint) - 首次绘制: FP 表示浏览器首次绘制像素到屏幕上的时间,通常是指页面的第一个非白色像素点。它是评估页面渲染速度的重要指标。
  5. FMP (First Meaningful Paint) - 首次有意义的内容绘制: FMP 表示页面首次呈现有意义的内容到屏幕上的时间。它反应了用户认为页面有用的内容何时可见,是用户体验的重要组成部分。
  6. LCP (Largest Contentful Paint) - 最大内容绘制: LCP 衡量了用户在页面上看到的最大和最重要的内容元素(例如,主要文章、主要图片)绘制完成的时间。更短的 LCP 时间意味着用户更快地看到页面上最重要的内容。
  7. TTFB (Time to First Byte) - 首字节时间: TTFB 衡量了用户请求网页后,收到来自服务器的第一个字节响应的时间。较短的 TTFB 时间通常表示更快的服务器响应,有助于提高加载速度。
  8. TTI (Time to Interactive) - TTI 表示页面变得可交互的时间,即用户可以与页面进行交互的时间点。较短的 TTI 对于提供良好的用户体验至关重要。
  9. DCL (DOM Content Loaded) - DLC 表示浏览器完成解析DOM树并完成加载页面的时间。它通常用于评估页面脚本的加载性能。

工具和插件:

web-vitals插件

这个方法是要在自己的项目中安装一个web-vitals插件来使用记录。 在自己需要的页面引入,也可以写一个公共的文件,例如: 公共文件reportWebVitals.ts

import { ReportHandler } from "web-vitals";

const reportWebVitals = (onPerfEntry?: ReportHandler) => {
  if (onPerfEntry && onPerfEntry instanceof Function) {
    import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
      getCLS(onPerfEntry);
      getFID(onPerfEntry);
      getFCP(onPerfEntry);
      getLCP(onPerfEntry);
      getTTFB(onPerfEntry);
    });
  }
};

export default reportWebVitals;

比如我要在入口文件引入,且只在测试环境观察效果:

if (process.env.NODE_ENV !== "production") {
  import("./reportWebVitals").then((module) => {
    const reportWebVitals = module.default;
    // eslint-disable-next-line no-console
    reportWebVitals(console.log);
  });
}

这样就能在项目中实现效果了,效果如下:

image.png

浏览器自带的性能分析工具

环境:谷歌浏览器

以谷歌浏览器为例,以本站首页测试,按F12打开开发者工具。如下图:

image.png

按下Ctrl+E后就会开始录制当期页面

image.png 我在录制了大概1分钟后,效果如下

image.png

lighthouse

有两种方法可以使用,一种是新的谷歌浏览器的开发者工具已经有这个功能了,还有一种是npm全局安装lighthouse插件进行使用。

①:浏览器自带使用(暂时发现只有谷歌浏览器) 同样是在谷歌浏览器,按F12打开开发者工具

image.png

然后点击 分析网页加载情况,然后等待它加载完成,效果如下

image.png

②:npm安装使用 在windows PowerShell 中输入npm i lighthouse -g

安装完成后便可使用,同样是本站首页:lighthouse juejin.cn/

image.png

命令执行后便会开始进行分析,分析完毕后会生成一个文件,在执行位置下

image.png

打开后就可以看到页面的各方面性能数据了,跟上面的方法差不多

image.png

PageSpeed Insights

进入网站:developers.google.cn/speed/docs/… 需要谷歌账号去使用

image.png

SpeedTracker

进入网站:speedtracker.org/ 需要在网站申请一个API Key.

image.png

WebPageTest

进入网站:www.webpagetest.org/

image.png

SiteSpeed

进入网站:www.sitespeed.io/

但是使用的话,需要有docker的基础

image.png

以下都有试用期,试用期过后收费

SpeedCurve

进入网站:www.speedcurve.com/

image.png

Pingdom

进入网站:www.pingdom.com/

image.png

Caliber

进入网站:calibreapp.com/

image.png

总结

以上是所有方法的总结,个人常用的是前三种。有需要可以按自己喜好选择。