我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【性能优化】性能测量工具-LightHouse

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【性能优化】性能测量工具-LightHouse

  1. Chrome DevTools Performance 主要用于日常开发过程中分析运行时的性能表现。
  2. Lighthouse 用来生成网页的性能评测报告。
  3. WebPageTest 用来进行整体的网站质量评估、一站式性能评估。

有了这3个工具我们就可以从多个维度对网站性能进行全方位的评估。

性能测量工具-Lighthouse

Lighthouse是Google开发的一款开源工具,提供一套全面的测试来评估网页质量,包括加载性能、可访问性、最佳实践和PWA。在chrome 60之后的版本,DevTool里已经内置了Lighthouse。

Lighthouse的目标是“Do Better Web”,旨在帮助Web开发者改进他们现有的Web应用程序。通过运行一整套的测试,开发者可以发现新的 Web 平台 API,意识到性能的隐患,并学习(新的)最佳实践。换句话说,就是让开发者在 Web 开发上做得更好。

1. 使用方式

1.1 使用命令行工具 Node CLI 进行测试

命令行工具则允许开发者将 Lighthouse 集成到持续集成系统。

安装 Lighthouse 作为一个全局节点模块 npm install -g lighthouse

针对一个页面运行 Lighthouse 审查 lighthouse https://www.taobao.com

最后命令行中会输出一个html页面,打开页面我们就可以查看评估报告了

默认情况下,命令行生成的报告页面会从性能(Performance)、易用性(Accessibility)、最佳实践(Best Practices)、SEO、PWA支持程度等几个方面生成评估报告。如果我们想设置类别,只进行 performance 类别测试,可以在命令后面添加 --only-categories=performance。

除此之外,lighthouse命令提供了很多选项,以下几个是需要注意的:

  • --chrome-flags:用来传入chrome命令行参数,chrome命令行参数是Chrome为了实现实验性功能、方便调试、延伸选项而做的特殊功能,目前已经提供了一千多个参数,完整列表点这里,其中有些参数在服务器部署和运行chrome的时候很有用。
  • --disable-storage-reset:在运行前不清空浏览器缓存和其他storage API,可以用来测二次访问的性能情况
  • --disable-device-emulation:Lighthouse默认会用Nexus 5X的模拟器测试页面,可以用这个选项禁用掉,尤其是测试PC端页面的时候
  • --disable-network-throttling:Lighthouse默认会模拟使用fast 3G的网速,使用这个参数禁用掉网速模拟

1.2 作为node模块使用

我们还可以将Lighthouse作为一个node模块,在自己的工程里调用,代码如下:

  1. const lighthouse = require('lighthouse'); 
  2. const chromeLauncher = require('chrome-launcher'); 
  3.  
  4. function launchChromeAndRunLighthouse(url, opts, config = null) { 
  5.   // 1. 使用chrome launcher打开一个chrome窗口 
  6.   return chromeLauncher.launch({chromeFlags: opts.chromeFlags}).then(chrome => { 
  7.     opts.port = chrome.port; 
  8.     // 2. 在相同的端口运行lighthouse 
  9.     return lighthouse(url, opts, config).then(results => 
  10.       chrome.kill().then(() => results)); 
  11.   }); 
  12.  
  13. const opts = { 
  14.   chromeFlags: ['--show-paint-rects'
  15. }; 
  16.  
  17. // Usage: 
  18. launchChromeAndRunLighthouse('https://example.com', opts).then(results => { 
  19.   // Use results! 
  20. }); 

1.3 在Chrome DevTools 中使用

按下Command+Opiton+I(Mac)或者Control+shift+I (Windows, Linux) 来打开Devtools

点击LightHouse面板(旧版本的Chrome浏览器是 Audits 面板),可以看到如下界面

在 Device 选择测试模拟的设备,在 Categorle 中选择性能评估的类别,比如我们测试淘宝首页,选择测试PC端的网页性能

点击Generate report按钮,我们可以在控制台中直接生成有关性能的评估报告

 

1.4 通过 Chrome 应用商店安装扩展程序

安装地址:https://chrome.google.com/webstore/detail/lighthouse/blipmdconlkpinefehnmjammfjpmpbjk

点击 Generate report 按钮以针对当前打开的页面运行 Lighthouse 测试


浏览器扩展程序和 devTools 面板的区别

LightHouse 的扩展程序主要用于测试国外的网站,因为国内好多网站没有国际cdn,测出来的结果往往不太准确。而 devTools中的 LightHouse 面板是在本地的网络环境下测试。

比如我用本地的devTools lightHouse访问抖音官网,评估得分是81分,而扩展程序评估的结果减少1倍的得分,只有40分左右,就是因为CDN资源请求过长导致的。当然如果做国外网站的性能评估,就不用考虑这个问题。

2. 评估报告分析

2.1 整体质量评估

整体质量评估主要有5个方面:性能(Performance)、可访问性(Accessibility)、网络最佳实践(Best Practies)、搜索引擎优化(SEO)渐进式应用PWA(Progressive Web Apps)


其中PWA 是Chrome一直推的一个渐进式Web应用开发,旨在增强 Web 能力,缩小与原生应用的差距并创建与其类似的用户体验。主要包含四大模块,这里简答介绍一下,如下图:


2.2 性能评估

性能评估主要包含6大指标:

  1. 首次有内容绘制时间(FCP,First Contentful Paint):用于记录页面首次绘制文本、图片、非空白 Canvas 或 SVG 的时间。
  2. 最大内容绘制时间(LCP,Largest Contentful Paint):用于记录视窗内最大的元素绘制的时间,该时间会随着页面渲染变化而变化,因为页面中的最大元素在渲染过程中可能会发生改变,另外该指标会在用户第一次交互后停止记录。
  3. 速度指数(Speed Index): 指的是网页以多快的速度展示内容,标准时间是4s。
  4. 阻塞交互时间(TBT, Total Blocking Time):用户体验指标,代表着页面何时真正进入可用的状态。毕竟光内容渲染的快也不够,还要能迅速响应用户的交互。
  5. 用户可交互时间(TTI, Time to Interactive):这个指标并不是指的最早的可交互时间,而是可流畅交互的时间,具体的值为FMP之后,5秒后没有long task执行(50ms以上的任务)的时间
  6. 累计布局偏移(CLS, Cumulative Layout Shift):记录了页面上非预期的位移波动。

2.3 优化建议

评估之后,LightHouse会给出一些优化建议,如图:


我们可以看到两条红色的建议:

  1. Preload Largest Contentful Paint image:预加载最大内容绘制图像时间,预加载LCP元素使用的图像以缩短LCP时间(视窗最大可见图片或者文本块的渲染时间)。
  2. Avoid multiple page redirects:避免多页重定向,重定向会在加载页面之前引入额外的延迟。

3. 测试流程及核心模块

在 LightHouse 测试过程中,命令面板中会输出测试过程中的日志,截图显示如下:

通过lighthouse测试过程中输出的日志,可以画出 Lighthouse 的测试流程图:


  1. Lighthouse 与浏览器建立连接。
  2. 测试的初始化配置与加载待测试页面。
  3. 在页面加载过程中,运行一系列的采集器(Gatherers),每个采集器都会收集自己的目标信息,并生成中间产物(artifacts)。
  4. 运行一系列的审计项(Audits),每个审计项都会从中间产物(artifacts)中获取所需的数据,计算出各自的评分。
  5. 基于审计项的评分计算出大类的评分,汇总生成报告。

初步了解了基本的测试流程后,我们再看下官方给出的 Lighthouse 架构图:


这里简单介绍一下这几个模块:

  1. Driver 模块:驱动器负责与浏览器的双向通信、记录事件日志、模拟器的设置等。
  2. Gatherer 模块:采集者模块会通过 pass 这个配置,定义页面如何加载,并运行配置的所有 gatherers 来采集页面加载过程中的信息,并生成中间产物 artifacts。有了 artifacts,就可以进入下一步的 Audits 模块。
  3. Audits 模块:审计模块,与 gatherers 类似,在配置文件中也会定义需要运行的 audits,每一个 audits 也都有与之对应的同名实现文件。当运行完配置文件中定义的所有审计项后,就得到了每个审计项的评分与详情,后续就进入 Report 模块。
  4. Report 模块:报告模块的配置文件中,会定义每个测试类别所需的审计项,以及每个审计项所占的权重。

在最终汇总阶段,Lighthouse 会基于该配置文件以及上一个环节中计算出的每个审计项的评分,加权计算出 performance 的评分。并基于每个审计项的评分与种类,将审计项划分为通过与不通过,对于不通过的审计项会给出详细的测试详情与优化指引。

最后

Lighthouse可以作为集成性能测试工具。为我们提供标准的性能报告,在使用过程中我们可以将其集成于CD流程,作为测试的一种,保证我们上线的功能在大多环境下有着优秀的表现。

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【性能优化】性能测量工具-LightHouse

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【性能优化】性能测量工具-LightHouse

Lighthouse是Google开发的一款开源工具,提供一套全面的测试来评估网页质量,包括加载性能、可访问性、最佳实践和PWA。在chrome 60之后的版本,DevTool里已经内置了Lighthouse。

【性能优化】性能测量工具-WebPageTest

WebPagetest的核心是用于测量和分析网页的性能。它是 google 开源项目《make the web faster》的子项目,它本来是 AOL 内部使用的工具,后来在2008年基于BSD开源。

【性能优化】性能测量工具-Chrome DevTools Performance

运行时性能表现(runtime performance)指的是当你的页面在浏览器运行时的性能表现,而不是在加载页面的时候的表现。本文将会告诉你怎么用Performance 工具去分析运行时性能表现。

如何使用Lighthouse性能检测工具

最近做性能检测工具,很多知识点不清楚,打算查缺补漏,接下来从官方提供的性能检测工具Lighthouse(灯塔)开始我们的学习,简单介绍了下Lighthouse的一些点。

Lighthouse —— 优秀的网页性能分析工具

Lighthouse可以直接集成到Chrome开发者工具中,也可以在Node.js环境中使用。在使用Lighthouse时,用户可以选择要分析的页面、设备类型(桌面或移动)以及要分析的方面(性能、可访问性、最佳实践等)。

C#中如何使用性能测试工具和性能优化技巧

C#中如何使用性能测试工具和性能优化技巧,需要具体代码示例性能优化在软件开发过程中起着非常重要的作用,它可以提高系统的性能、运行速度和响应能力。C#是一种高性能的编程语言,也有许多性能优化技巧和工具可以帮助我们更好地利用C#的优势。本文将介
2023-10-22

SQL Server性能优化工具Profiler

SQL Server Profiler是一个界面,用于创建和管理跟踪并分析和重播跟踪结果。 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分析或用它来重播一系列特定的步骤。

Golang 技术性能优化中如何整合性能优化工具?

Golang 技术性能优化中整合性能优化工具在 Golang 应用中,性能优化至关重要,而借助性能优化工具可以极大地提升此过程的效率。本文将指导您逐步整合流行的性能优化工具,以帮助您对应用程序进行全面的性能分析和优化。1. 选择性能优化
Golang 技术性能优化中如何整合性能优化工具?
2024-05-12

PHP 函数性能优化自动化工具

php函数性能优化自动化工具通过分析函数性能,帮助快速识别和修复性能瓶颈。工具可用composer安装,并可通过functionprofiler类进行使用。分析结果包括函数执行时间、内存使用情况和调用次数,以及瓶颈函数列表。通过案例演示,该
PHP 函数性能优化自动化工具
2024-04-11

通过Go语言实现的压测工具优化性能

通过Go语言实现的压测工具优化性能随着互联网应用的不断发展,对于Web服务的高并发处理能力要求也越来越高。压测是一种测试系统在各种条件下的性能的方法,可以模拟多个用户同时访问系统,从而测试系统在高并发情况下的性能表现。在这篇文章中,我们将
通过Go语言实现的压测工具优化性能
2024-03-10

推荐几个 React 性能优化工具

Profiler 是 React 中的一个组件,由 B. Vaughn 开发,它可以测量 React 应用渲染的频率和渲染所花费的时间资源。Profiler 提供一个函数属性 onRender,当组件 mount 或者 update 的时候

Android性能测试工具:Emmagee

Emmagee是监控指定被测应用在使用过程中占用机器的CPU、内存、流量资源的性能测试小工具。支持SDK:Android2.2以及以上版本Emmagee功能介绍1、检测当前时间被测应用占用的CPU使用率以及总体CPU使用量2、检测当前时间被
2022-06-06

如何用工具优化 golang 函数性能

golang 函数性能优化工具有:pprof:分析程序性能和内存使用情况,识别耗时的代码段。benchstat:比较不同函数或算法的性能,提供详细统计信息。go test -bench:内置基准测试功能,评估函数性能并查看基准测试报告。优化
如何用工具优化 golang 函数性能
2024-05-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录