前言
在平时开发中,总会想要看看项目的性能情况,所以本文收集十种方案,以供平时复盘使用。
有几个指标需要在本文前了解:
- CLS (Cumulative Layout Shift) - 累积布局偏移: CLS 衡量了网页上元素布局变化的稳定性。它是一个0到1之间的分数,其中0表示没有布局变化,1表示最差的布局稳定性。较低的 CLS 分数表示更好的用户体验,因为页面元素不会突然移动或跳动,导致用户误操作。
- FID (First Input Delay) - 首次输入延迟: FID 衡量了用户首次与页面互动(例如,点击链接或按钮)后到页面实际响应互动的时间。较低的 FID 表示更快的响应时间,增强了用户体验。
- FCP (First Contentful Paint) - 首次内容绘制: FCP 是用户首次看到页面上有实际内容呈现的时间点。这包括文本、图像或其他元素的显示。较短的 FCP 时间通常表示更快的加载速度和更好的用户体验。
- FP (First Paint) - 首次绘制: FP 表示浏览器首次绘制像素到屏幕上的时间,通常是指页面的第一个非白色像素点。它是评估页面渲染速度的重要指标。
- FMP (First Meaningful Paint) - 首次有意义的内容绘制: FMP 表示页面首次呈现有意义的内容到屏幕上的时间。它反应了用户认为页面有用的内容何时可见,是用户体验的重要组成部分。
- LCP (Largest Contentful Paint) - 最大内容绘制: LCP 衡量了用户在页面上看到的最大和最重要的内容元素(例如,主要文章、主要图片)绘制完成的时间。更短的 LCP 时间意味着用户更快地看到页面上最重要的内容。
- TTFB (Time to First Byte) - 首字节时间: TTFB 衡量了用户请求网页后,收到来自服务器的第一个字节响应的时间。较短的 TTFB 时间通常表示更快的服务器响应,有助于提高加载速度。
- TTI (Time to Interactive) - TTI 表示页面变得可交互的时间,即用户可以与页面进行交互的时间点。较短的 TTI 对于提供良好的用户体验至关重要。
- 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);
});
}
这样就能在项目中实现效果了,效果如下:
浏览器自带的性能分析工具
环境:谷歌浏览器
以谷歌浏览器为例,以本站首页测试,按F12打开开发者工具。如下图:
按下Ctrl+E后就会开始录制当期页面
我在录制了大概1分钟后,效果如下
lighthouse
有两种方法可以使用,一种是新的谷歌浏览器的开发者工具已经有这个功能了,还有一种是npm全局安装lighthouse插件进行使用。
①:浏览器自带使用(暂时发现只有谷歌浏览器) 同样是在谷歌浏览器,按F12打开开发者工具
然后点击 分析网页加载情况,然后等待它加载完成,效果如下
②:npm安装使用 在windows PowerShell 中输入npm i lighthouse -g
安装完成后便可使用,同样是本站首页:lighthouse juejin.cn/
命令执行后便会开始进行分析,分析完毕后会生成一个文件,在执行位置下
打开后就可以看到页面的各方面性能数据了,跟上面的方法差不多
PageSpeed Insights
进入网站:developers.google.cn/speed/docs/… 需要谷歌账号去使用
SpeedTracker
进入网站:speedtracker.org/ 需要在网站申请一个API Key.
WebPageTest
进入网站:www.webpagetest.org/
SiteSpeed
进入网站:www.sitespeed.io/
但是使用的话,需要有docker的基础
以下都有试用期,试用期过后收费
SpeedCurve
进入网站:www.speedcurve.com/
Pingdom
进入网站:www.pingdom.com/
Caliber
进入网站:calibreapp.com/
总结
以上是所有方法的总结,个人常用的是前三种。有需要可以按自己喜好选择。