Project Icon

browsertime

开源Web性能测量与优化工具

Browsertime是一个基于Node.js的开源性能测量工具,作为sitespeed.io等项目的核心引擎,同时也被Mozilla用于Firefox性能测试。它能够进行全面的网页性能评估,测量页面加载时间、资源加载和用户交互等指标。Browsertime支持深度指标分析、JavaScript脚本定制和Docker集成,为Web性能优化提供了多样化的解决方案。

Browsertime

运行Docker 单元测试 Windows Edge OSX Safari Linux浏览器 下载量 总下载量 星标数

文档 | 更新日志

Browsertime

Browsertime:测量和优化Web性能

Browsertime是一个强大的开源Node.js工具,专为构建自己的性能测量工具的工程师设计。它是sitespeed.io等项目的核心引擎,也是Mozilla用来测量Firefox性能的可信工具。

目录

  1. 简介
  2. 主要特性
  3. 安装
  4. 使用方法
  5. 浏览器支持
  6. 工作原理
  7. 贡献
  8. 社区和支持
  9. 许可证

主要特性

  • 强大的性能测试: Browsertime允许你对网页进行全面的性能测试,包括页面加载时间、资源加载和用户交互。

  • 深入的指标: 获取广泛的性能指标,如页面加载时间、视觉指标(屏幕上的内容何时绘制)、最大内容绘制(LCP)等,帮助你找出需要改进的地方。

  • 脚本功能: 使用JavaScript脚本自定义测试和用户交互,实现高级场景和详细分析。

  • Docker支持: 通过Docker支持,轻松将Browsertime集成到你的CI/CD流程和容器化环境中。

安装

如果你是一名从事性能测量工具开发的工程师,或者只是想利用Browsertime的强大功能来满足你的Web性能需求,请按照以下安装和使用说明进行操作。

NodeJS

npm install -g browsertime
browsertime https://example.com

Docker

docker run --rm -v "$(pwd)":/browsertime sitespeedio/browsertime https://www.sitespeed.io/

使用方法

无论你的经验水平如何,Browsertime的设计都易于使用。以下是快速入门指南。

基本用法

browsertime https://www.example.com --browser chrome

此命令将使用Chrome测试https://www.example.com。

高级选项

Browsertime提供了多种高级选项,用于更详细的分析,例如指定运行次数、选择浏览器或设置自定义指标。以下是一些示例:

多次运行测试

browsertime -n 5 https://www.example.com

指定不同的浏览器

browsertime --browser firefox https://www.example.com

自定义指标

browsertime --script "return {'myMetric': window.myApp.customMetric}" https://www.example.com

要查看完整的选项列表,请运行$ browsertime --help,你可以看到配置选项。

网络连接

你可以限制连接速度,使连接变慢,从而更容易捕捉到性能退化。最好的方法是在Docker中设置网络桥接或使用我们的连接引擎Throttle。在文档中阅读更多关于如何操作的信息。

脚本中导航

如果你需要更复杂的测试场景,可以定义自己的(Selenium)测试脚本来进行测试。当你想测试已登录用户的页面、登录页面或向购物车添加商品时,请使用自己的测试脚本。

我们在文档中有一整节关于脚本编写的内容。

在移动设备上测试

Browsertime支持Android上的Chrome和Firefox:收集SpeedIndex、HAR和视频!

在开始之前,你需要安装adb准备好你的手机

如果你想设置连接,你需要使用类似gnirehtet的工具。在这里阅读更多信息。

$ browsertime --chrome.android.package com.android.chrome https://www.sitespeed.io --video --visualMetrics

使用WebPageReplay

我们的Docker容器现在包含WebPageReplay

WebPageReplay允许你在本地重放页面(消除服务器延迟),使发现前端性能退化变得更容易。

它的工作原理如下:

  1. 启动脚本以记录模式启动WebPageReplay
  2. 然后启动Browsertime访问你选择的URL一次(以便记录)
  3. 关闭WebPageReplay
  4. 以重放模式启动WebPageReplay
  5. Browsertime访问URL多次(你选择的次数)
  6. 关闭重放模式的WebPageReplay

你可以通过设置Docker环境变量来改变延迟。使用REPLAY来开启重放功能。

默认浏览器是Chrome:

docker run --cap-add=NET_ADMIN --rm -v "$(pwd)":/browsertime -e REPLAY=true -e LATENCY=100 sitespeedio/browsertime:20.0.0 https://en.wikipedia.org/wiki/Barack_Obama

使用Firefox:

docker run --cap-add=NET_ADMIN --rm -v "$(pwd)":/browsertime -e REPLAY=true -e LATENCY=100 sitespeedio/browsertime:20.0.0 -b firefox -n 11 --firefox.acceptInsecureCerts true https://en.wikipedia.org/wiki/Barack_Obama

在Android手机上使用Chrome。这只适用于Linux,因为你需要能够在Docker中挂载usb端口:

docker run --privileged -v /dev/bus/usb:/dev/bus/usb -e START_ADB_SERVER=true --cap-add=NET_ADMIN --rm -v "$(pwd)":/browsertime -e REPLAY=true -e LATENCY=100 sitespeedio/browsertime https://en.m.wikipedia.org/wiki/Barack_Obama --android --chrome.args ignore-certificate-errors-spki-list=PhrPvGIaAMmd29hj8BCZOq096yj7uMpRNHpn5PDxI6I= -n 11 --chrome.args user-data-dir=/data/tmp/chrome

速度指数和视频

运行我们现成的Docker容器是最简单的方法来录制视频和计算速度指数,因为这样您可以免费获得运行VisualMetrics所需的所有依赖项。

默认的视频将包含一个计时器,并显示指标发生的时间,但您可以使用--video.addTimer false来关闭它。

浏览器支持

Browsertime支持桌面上的Firefox、Chrome和Edge(Chromium版本),以及Mac OS上的Safari。在Android上,我们支持Chrome和Firefox。iOS上的Safari支持有限:没有HAR文件和视觉指标。您也可以在Mac OS上使用Safari模拟器。

工作原理

Browsertime使用Selenium NodeJS来驱动浏览器。它启动浏览器,加载URL,执行可配置的JavaScript来收集指标,收集HAR文件。

为了从Firefox获取HAR,我们使用HAR Export Trigger,而对于Chrome,我们使用Chrome-HAR来解析时间线日志并生成HAR文件。

贡献

我们欢迎社区的贡献!无论是修复bug、添加功能还是改进文档,您的帮助都很有价值。以下是您可以贡献的方式:

  1. 创建问题:创建一个问题并与我们讨论如何实施。
  2. Fork和克隆:Fork仓库并在本地克隆。
  3. 创建分支:为您的功能或bug修复创建一个新分支。
  4. 开发:进行更改。确保遵守编码标准,如果适用,请编写测试。
  5. 测试:运行测试以确保一切按预期工作。
  6. 提交拉取请求:将您的更改推送到您的fork,并向主仓库提交拉取请求。

在贡献之前,请阅读我们的CONTRIBUTING.md以获取有关如何贡献的更详细信息。

报告问题

发现了bug或有功能请求?请使用GitHub Issues来报告。请务必检查现有问题以避免重复。

社区和支持

加入我们的社区!无论您需要帮助、想分享经验还是讨论潜在的改进,都有几种方式可以参与:

我们很高兴有您加入我们的社区,期待您的贡献和互动!

许可证

Apache License版本2.0

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号