前端的性能优化有诸多有迹可循的理论和方法,比如 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的更多相关文章

  1. 【Python算法】渐进记法 与 性能测量工具cProfile

    对于某个比较简单的算法,我们有时候确实能够精确地分析出算法的复杂度. 比如算法复杂度为5n^2+10n+6,但是事实上并不需要这样,因为当n足够大时,可以忽略掉低阶项和最高次项的系数,因此就引出了“渐 ...

  2. 前端性能优化插件 --- PageSpeed Insights

    对于前端工程师来说,前端性能优化始终都是非常重要的一环,它决定了用户体验, 决定了一个用户是否愿意在页面的加载浪费时间, 从而丢失用户. 所以前端性能优化是非常重要的. 下载地址 https://ch ...

  3. DevTools 实现原理与性能分析实战

    一.引言 从 2008 年 Google 释放出第一版的 Chrome 后,整个 Web 开发领域仿佛被注入了一股新鲜血液,渐渐打破了 IE 一家独大的时代.Chrome 和 Firefox 是 W3 ...

  4. Reporting Services 的伸缩性和性能表现规划(转载)

    简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台.Re ...

  5. 阿里巴巴 web前端性能优化进阶路

    Web前端性能优化WPO,相信大多数前端同学都不会陌生,在各自所负责的站点页面中,也都会或多或少的有过一定的技术实践.可以说,这个领域并不缺乏成熟技术理论和技术牛人:例如Yahoo的web站点性能优化 ...

  6. Google PageSpeed Tools 性能测试分析

    今天给大家介绍下一个工具:Google PageSpeed Tools,根据官方的介绍,简单梳理如下: Page Speed Insights能针对移动设备和电脑设备衡量网页的性能.该工具会抓取网址两 ...

  7. 技术周刊 · Lighthouse 测试报告生成

    登高远眺 天高地迥,觉宇宙之无穷 基础技术 Lighthouse 测试内幕 文章分享了网易云音乐前端性能监控平台使用 Lighthouse 的实践经验,介绍了 Lighthouse 的测试流程.内部模 ...

  8. 超硬核 Web 前端学霸笔记,学完就去找工作!

    文章和教程 Vue 学习笔记 Node 学习笔记 React 学习笔记 Angular 学习笔记 RequireJS 学习笔记 Webpack 学习笔记 Gulp 学习笔记 Python 学习笔记 E ...

  9. 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会

    蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...

  10. Android源码目录结构详解(转载)

    转自:http://blog.csdn.net/xiangjai/article/details/9012387 在学习Android的过程中,学习写应用还好,一开始不用管太多代码,直接调用函数就可以 ...

随机推荐

  1. Linux-管道、环境变量、常用命令

    目录 管道 概念 要点 与文件重定向的区别 环境变量 概念 查看 常用命令 查看系统状况 权限 文件查找 用户相关 工具 管道 概念 管道的作用类似于文件重定向,可以将前一个命令的stout做为下一个 ...

  2. 洛谷P3612(递归)

    题目描述 The cows are experimenting with secret codes, and have devised a method for creating an infinit ...

  3. 基于jquery+html开发的json格式校验工具

    json简介 JSON是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Language, Standard ECMA-2 ...

  4. 实战攻防演练-WinRar压缩包创建自解压木马

    前言 在攻防演练中,钓鱼攻击通常采用社会工程学手段,通过伪装成可信的来源,引导用户点击恶意链接或下载恶意文件,进而实现攻击.而使用压缩包自解压技术可以在一定程度上提高攻击成功率.其中包含的自解压木马就 ...

  5. 【Java集合】单列集合Collection常用方法详解

    嗨~ 今天的你过得还好吗? 路途漫漫终有一归, 幸与不幸都有尽头. 在上篇文章中,我们简单介绍了下Java 集合家族中的成员,那么本篇文章,我们就来看看 Java在单列集合中,为我们提供的一些方法,以 ...

  6. MIT实验警示:人类或需要人工智能辅助才能理解复杂逻辑

    麻省理工实验揭示人类的天赋缺陷 麻省理工学院林肯实验室(MIT Lincoln Laboratory)的一项研究表明,尽管形式规范具有数学上的精确性,但人类并不一定能对其进行解释.换句话说就是,人类在 ...

  7. .NET开源的处理分布式事务的解决方案

    前言 在分布式系统中,由于各个系统服务之间的独立性和网络通信的不确定性,要确保跨系统的事务操作的最终一致性是一项重大的挑战.今天给大家推荐一个.NET开源的处理分布式事务的解决方案基于 .NET St ...

  8. java-图片添加水印

    前言:    需求:需要在图片中添加水印,防止盗用   优缺点:     优点:保护版权,防止盗用     缺点 可能会影响图片的视觉效果:如果水印过大或过醒目,可能会影响图片的视觉效果. 可能会增加 ...

  9. Python 中 key 参数的含义及用法

    哈喽大家好,我是咸鱼 我们在使用 sorted() 或 map() 函数的时候,都会看到里面有一个 key 参数 其实这个 key 参数也存在于其他内置函数中(例如 min().max() 等),那么 ...

  10. 春秋云镜 - CVE-2022-28060

    Victor CMS v1.0 /includes/login.php 存在sql注入 找到页面的登录框,看介绍应该是post类型的表单注入. 上sqlmap用原本的梭发现ctf的那个表是空的,换用- ...