性能测量工具-DevTools/PageSpeed/LightHouse
前端的性能优化有诸多有迹可循的理论和方法,比如 Yahoo!性能军规(Best Practices for Speeding Up Your Web Site)、Google PageSpeed Insights Rules(https://developers.google.com/speed/docs/insights/rules)。万变不离其宗,诸如此类的性能优化准则都可以对应到 Browser Processing Model 的不同阶段。

具体可以查看《前端性能监控:window.performance 属性分析》
显然,这些指标绝大部分都属于非视觉指标(Non-Visual Metrics),是体验优化的常规指标,更是体验和性能优化中逃不开的关键因素,但却并非感官指标,也并不能完全衡量出用户的感官性能(Perceptual Performance)。
所谓感官性能,即用户直观感知到的性能,用户感受是一种非常主观的判断,那么如何衡量和统计感知性能?通常我们针对用户感知会通过用研分析的方式(眼动仪、用户沟通、用户反馈、调研问卷、专家评估)来评估和衡量。但感官性能不同于用户感受,是否有方式可以量化和衡量呢?笔者经过一些调研和了解后,发现感官性能是可以通过一定方式进行衡量、分析和对标的,因为对性能的感受更多反映在视觉的变化上,因此我们可以通过一些视觉指标来衡量感官性能:
First Paint Time/First Non-Blank Paint:首次渲染的时间
First Contentful Paint Time:文档中内容元素首次渲染时间
First Meaningful Paint Time :代表首次有意义的渲染时间
First Interactive Time:首次可交互时间
Consistently Interactive Time:持续可交互时间
Fisrt Visual Change:首次视觉发生变化的时间点
Last Visual Change:最后一次视觉发生变化的时间点
Speed Index:视觉速度—— Mean Pixel-Histogram Difference
Perceptual Speed Index :视觉速度—— Structural Similarity Image Metric 算法,统计结果更贴近用户的真实感受
性能优化分析工具
提及性能优化分析工具,在开发阶段我们拥有众多的选择(比如 Chrome 自带的 Dev Tools、老牌的 YSlow、以及 Google 推出的 PageSpeed Insights),这里笔者强烈推荐的是 Lighthouse。
PageSpeed Insights 也在 2018 年的某次改版中將 Lighthouse 評分整併到 PageSpeed Insights 中!
而兩者相較之下, PageSpeed Insights 整併後主要是增加了較多視覺報表呈現的部分,並且可以選擇語系來看分析後的優化方案;而 Lighthouse 則有多個管道可以查看檢測後的結果。
介紹這三個工具的用法與差異:
Google DevTools
Google Extensions Lighthouse
Web.dev
Google DevTools
在Google Chrome 浏览器中有着非常好用的DevTools,而在Chrome 60 版本后, DevTools 新增了一项面板Audits 便是基于Lighthouse 所制作出来的。我们只要打开DevTools 在面板Audits 执行Run audits 即可开始测分。
采用这个方法的好处是可以针对于一些未实际架在server 上的网页做检测,例如想在测试机上调校SEO,或是以local 端方式开启的网站也能用这个方法评分。

Web.dev
Web.dev 也是由 Google 基于 Lighthouse 所开发,与 PageSpeed Insights、Lighthouse 基本上是差不多的,不一样的地方在於它的測評是依據衝擊度(Impact)來排名,可以較直覺從比較重要的項目開始優化。另外則是下載報表時會稍微方便一點。

What's Lighthouse
Lighthouse是Google开发的一款开源工具,提供一套全面的测试来评估网页质量,包括加载性能、可访问性、最佳实践和PWA。
官方介绍:https://developers.google.com/web/tools/lighthouse
Lighthouse is an open-source, automated tool for improving the quality of web pages. You can run it against any web page, public or requiring authentication. It has audits for performance, accessibility, progressive web apps, SEO and more.
You can run Lighthouse in Chrome DevTools, from the command line, or as a Node module. You give Lighthouse a URL to audit, it runs a series of audits against the page, and then it generates a report on how well the page did. From there, use the failing audits as indicators on how to improve the page. Each audit has a reference doc explaining why the audit is important, as well as how to fix it.
在chrome 60之后的版本,DevTool里已经内置了Lighthouse。
开源库:https://github.com/GoogleChrome/lighthouse 是这么介绍自己的:
Lighthouse analyzes web apps and web pages, collecting modern performance metrics and insights on developer best practices.
Lighthouse的目标是“Do Better Web”,旨在帮助Web开发者改进他们现有的Web应用程序。通过运行一整套的测试,开发者可以发现新的 Web 平台 API,意识到性能的隐患,并学习(新的)最佳实践。换句话说,就是让开发者在 Web 开发上做得更好。
lightthouse架构图
https://github.com/GoogleChrome/lighthouse/blob/master/docs/architecture.md(推荐打开看看)

lighthouse的源码结构
——
├─assets
├─build
├─clients // 浏览器中的展示逻辑
│ └─extension // 扩展
├─docs // 文档
├─lighthouse-cli // 命令行工具
│ ├─commands // 命令
│ └─test
├─lighthouse-core // 核心逻辑
│ ├─audits
│ ├─computed
│ │ └─metrics
│ ├─config
│ ├─gather
│ │ ├─connections
│ │ └─gatherers
│ ├─lib // 工具库
│ ├─report // 报告生成器
│ │ └─html
│ │ └─renderer
│ └─test // 测试用例
├─lighthouse-logger // 日志收集
├─lighthouse-viewer // 报告渲染工具
└─types // 类型文件
Lighthouse 整体调用关系
Lighthouse-core internal module dependencies

其实我觉得官方文档已近很好了,看着文档使用完全不似问题。
这里没有必要多讲。但是要去看这个的原理,目前暂时没有这个功夫去深入了解……
参考文章:
【性能优化】性能测量工具-LightHouse https://zhuanlan.zhihu.com/p/370520996
前端感官性能的衡量和优化实践 https://zhuanlan.zhihu.com/p/29677049
网路优化不可不知的测评工具Lighthouse, PageSpeed Insights & Web.dev https://shawnlin0201.github.io/Optimization/Optimization-001-lighthouse/
转载本站文章《性能测量工具-DevTools/PageSpeed/LightHouse》,
请注明出处:https://www.zhoulujun.cn/html/webfront/engineer/Performance/8662.html
性能测量工具-DevTools/PageSpeed/LightHouse的更多相关文章
- 【Python算法】渐进记法 与 性能测量工具cProfile
对于某个比较简单的算法,我们有时候确实能够精确地分析出算法的复杂度. 比如算法复杂度为5n^2+10n+6,但是事实上并不需要这样,因为当n足够大时,可以忽略掉低阶项和最高次项的系数,因此就引出了“渐 ...
- 前端性能优化插件 --- PageSpeed Insights
对于前端工程师来说,前端性能优化始终都是非常重要的一环,它决定了用户体验, 决定了一个用户是否愿意在页面的加载浪费时间, 从而丢失用户. 所以前端性能优化是非常重要的. 下载地址 https://ch ...
- DevTools 实现原理与性能分析实战
一.引言 从 2008 年 Google 释放出第一版的 Chrome 后,整个 Web 开发领域仿佛被注入了一股新鲜血液,渐渐打破了 IE 一家独大的时代.Chrome 和 Firefox 是 W3 ...
- Reporting Services 的伸缩性和性能表现规划(转载)
简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台.Re ...
- 阿里巴巴 web前端性能优化进阶路
Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践.可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化 ...
- Google PageSpeed Tools 性能测试分析
今天给大家介绍下一个工具:Google PageSpeed Tools,根据官方的介绍,简单梳理如下: Page Speed Insights能针对移动设备和电脑设备衡量网页的性能.该工具会抓取网址两 ...
- 技术周刊 · Lighthouse 测试报告生成
登高远眺 天高地迥,觉宇宙之无穷 基础技术 Lighthouse 测试内幕 文章分享了网易云音乐前端性能监控平台使用 Lighthouse 的实践经验,介绍了 Lighthouse 的测试流程.内部模 ...
- 超硬核 Web 前端学霸笔记,学完就去找工作!
文章和教程 Vue 学习笔记 Node 学习笔记 React 学习笔记 Angular 学习笔记 RequireJS 学习笔记 Webpack 学习笔记 Gulp 学习笔记 Python 学习笔记 E ...
- 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会
蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...
- Android源码目录结构详解(转载)
转自:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以 ...
随机推荐
- codeforces #864 div2 B
GCD Partition 这道题首先要解决一个问题,要把区间分成几块,可以证明分成两块是更优 首先我们假设把区间分成了m(>= 2)块 b1, b2, b3, ...,bm,则答案是gcd(b ...
- Radius+OpenLdap+USG防火墙认证
1.1.安装OpenLdap # 在数据目录创建ldap文件存放ldap的配置文件 mkdir -p /data/ldap/{data,conf} docker run -p 389:389 -p 6 ...
- HTTP工具类文件request.js的完善和优化
request.js 在现代前端项目中通常被称为一个HTTP请求工具或HTTP工具类文件.它的主要作用是对项目中用到的HTTP请求进行统一的配置和处理. 应用示例: // 查询用户列表 export ...
- cannot import name '_BindParamClause' from 'sqlalchemy.sql.expression'
python3.8 安装环境组件正常安装 运行 flask db init 报错 cannot import name '_BindParamClause' from 'sqlalchemy.sql. ...
- AtCoder Beginner Contest 326 (ABC326)
A. 2UP3DOWN 直接模拟即可. Code B. 326-like Numbers 枚举,每次拆除百.十.个位,再判断. Code C. Peak Description 数字线上放置了 \(N ...
- 浅析KV存储之长尾时延解决办法
本文分享自华为云社区<浅析KV存储之长尾时延问题,华为云 GeminiDB Redis 探寻行业更优解决方案!>,作者:华为云数据库GaussDB NoSQL团队. 目前,KV存储的广泛使 ...
- 前端本地导出文件 导出txt sql (简版版的字符串案例)
1.首页明确要导出的根据 一般有图片 excel 文字.针对不同的文件类型 配置不同的参数 2.知识点 Blob URL.createObjectUrl new Blob( arr ...
- 国企项目就用国产的 Solon Java Framework,v2.5.12 发布
Solon 是什么框架? Java 新的生态级应用开发框架.国产.从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模).与其他框架相比,解决了两个重要的痛点:启动慢,费内存 ...
- 运维初级实践——Linux系统命令教程
区块链运维工程师在Linux环境中常用的命令.快捷键,以及安装软件和文件管理的最佳实践. 1. 常用Linux命令 1.1 文件和目录操作 ls:列出目录内容 cd:更改目录 mkdir:创建新目录 ...
- Android 图表开源库调研及使用示例
原文地址: Android图表开源库调研及使用示例 - Stars-One的杂货小窝 之前做的几个项目都是需要实现图表统计展示,于是做之前调研了下,做下记录 概述 AAChartCore-Kotlin ...