Fast load times系列翻译——将性能预算合并到构建过程中

Fast load times系列翻译——将性能预算合并到构建过程中

在你定义了性能预算之后,就应该开始在程序中实施并追踪它了。有许多工具可以帮助你设置性能预算,并且在程序超出预算时发出警告。我们现在要做的就是去了解如何选择最适合你的需求的产品。🕵️‍♀️

使用 Lighthouse 性能预算

Lighthouse是一个查看性能的辅助工具,它可以在几个关键领域测试网站的性能、可访问性、最佳实践以及网站作为渐进式网页应用(PWA)的表现如何。

Lighthouse 的命令行版本(v5+)支持基于

  • 资源大小
  • 资源数量

的性能预算。

您可以为下列任何资源类型设置预算。

  • document(文档)
  • font(字体)
  • image(图片)
  • media(媒体)
  • other(其他)
  • script(脚本)
  • stylesheet(样式)
  • third-party(第三方)
  • total(整体)

预算显示在一个JSON文件中,在定义了预算之后,新生成的“Over Budget”列会告诉你是否超出了预算。Lighthouse报告的“预算”部分

webpack 性能提示

Webpack 是一个功能强大的构建工具,他能帮助你快速地将代码交付给客户。当然,它还支持基于资源大小的性能预算的设置。

webpack.config.js 中打开性能提示,当包的大小超出限制时,就会得到命令行的警告或错误提示。在开发过程中,这是一个监控资源的好方法。

在构建流程之后,webpack 会输出带颜色的资源列表,超出部分会用黄色标出。

当资源超出时,会将内容高亮显示

资源和入口文件默认限制都是 250KB,你可以在配置文件中设置你自己的预算。

webpack包体大小警告⚠️

预算时与未压缩时的资源进行比较!执行 JavaScript 的时间与未压缩的 JavaScript 有关,尤其是在移动设备上,大文件执行起来会花费很长时间。

但是压缩的资源会影响传输时间,这在慢速网络中也非常重要。

webpack不仅会警告你,它还会给你一个关于如何缩减包的建议。

Bundlesize

Bundlesize是一个简单的 npm 包,它会根据你预设的阈值测试资源大小。它可以在本地运行,也可以集成到 CI 里。

Bundlesize CLI

通过指定阈值和要测试的文件来运行bundlesize CLI。

bundlesize -f "dist/bundle.js" -s 170kB

Bundlesize会输出一行带颜色的测试结果。

测试未通过❌

测试通过✔️

Bundlesize 持续集成

使用 bundlesize 的最好方式就是在 CI 中集成它从而自动对 pull request (pr) 进行大小限制。如果 bundlesize 测试未通过,则该合并请求会失效。它适用于Travis CI, CircleCI, WerckerDrone。

在 github 上使用 bundlesize

你可能已经有了一个高速的应用,但是这可能随着新代码的添加而改变。使用 bundlesize 可以有效帮助你避免因为合并代码而导致性能下降。Bootstrap, Tinder, Trivago和其他很多公司都在使用它开保持性能预算。

bundlesize 可以为每个文件分别设置阈值。如果要在应用程序中拆分一个包,这一点将会特别有用。

默认情况下,它测试压缩后的资源大小。您可以通过设置选项切换到 brotli压缩 或完全关闭它。

Lighthouse Bot

lighthouse-travis

Lighthouse Bot 结合 Travis CI 来推行基于 Lighthouse 的五个指标。例如:将你的 Lighthouse 性能得分的预算设为 100。关注一个数字比关注整个性能预算要更清晰明了并且 lighthouse 的得分帮你考虑了很多因素。

Lighthouse 得分 💯

在你把站点部署到服务器后,lighthouse bot 会进行审查。在.travis.yml中使用--perf--a11y,--bp, --seo--pwa来指定 lighthouse 审查特定的指标。目标是保持在绿色区域,得分至少90分。

after_success:
  - ./deploy.sh # Deploy the PR changes to staging server
  - npm run lh -- --perf=96 https://staging.example.com # Run Lighthouse test

如果 GitHub上的pull request 得分低于你设定的阈值,Lighthouse Bot 可以阻止 pull request 被合并。 ⛔

lighthouse bot 在 Github 上检查状态

Lighthouse Bot 会在你提交 pr 来更新代码时评价你的代码。这是一个很好的特性,它能够激励我们在修改代码时关注性能问题。

Lighthouse 在 pr 中评价代码💬

如果你发现你的 pr 因为一个糟糕的评分被退回了,请先在代码中运行Lighthouse CLIDev Tools,它们会生成一个关于性能瓶颈的详细报告和用于简单优化的小提示。

总结

工具CLICISummary
Lighthouse✔️根据不同类型资源的规模或数量制定预算。
webpack✔️基于 webpack 生成的文件大小和未压缩的文件大小指定预算
bundlesize✔️✔️基于指定的资源大小和未压缩的文件大小的预算
Lighthouse Bot✔️基于 Lighthouse 的分数的预算

译者的话

本篇文件详细讲解了利用哪些工具能够在项目中实现性能预算,并描述了它们的特性。

**但是我认为这些很难在国内的环境中实现。**因为国内的大环境是不停地高速迭代产品,很少关注性能问题。如果只是因为一小点性能而延误了上线时间,大部分领导都是无法接受的,挺无奈,也很现实。

虽然如此,但是作为技术人,还是希望能够做出一个高性能的项目,如果有个人项目的,绝对可以让你的产品性能更上一层楼,大胆放心地使用吧。
欢迎关注我的个人微信公众号:前端 stack,每周分享一篇外文技术翻译哦

在这里插入图片描述


原文传送门

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值