Chrome性能专家Addy Osmani教你优化JavaScript

简介: 不确定 JavaScript 的开销对你的用户体验影响是否太大了?

原文作者:Addy Osmani
译者:UC 国际研发 Jothy


image.png

不确定 JavaScript 的开销对你的用户体验影响是否太大了? Lighthouse 有一个 JavaScript 执行时间检测工具,可以测算 JavaScript 对页面加载性能的总体影响:

image.png

试试咯。它在 Chrome 开发者工具的 Audits 面板中。也可以通过 WebPageTest 找到它。

对于上面这个网站,在移动设备上,浏览器只需 51 秒(哇哦)即可处理此网站的核心包。 包括网络传输时间,用户只需等待最多一分钟就能与此页面进行交互⏳

image.png

这是花在中等移动设备配置上的时间,包括解析,编译和执行脚本。 dev.to(提供类似的内容体验)能够加载他们的主包,对脚本执行的依赖性最小 ️

image.png

我们该如何控制原始网站 JS 的成本呢?

答案是只传输用户真正预先需要的 JavaScript。 我们可以根据需要使用代码分割等技术懒加载其余部分。 我在这里使用了 DevTools Code Coverage 功能。

image.png

如果我点击记录并加载上述历史,然后交互一段时间,我们可以看到约 57% 的代码可能并不需要预先加载。 对于可以按需加载的文件来说,这是一个很好的选择。

如果你之前没有用过 Lighthouse,那么你会发现它有很多有用的小功能,例如检查你是否正确最小化你的脚本或压缩它们:

image.png

如果您使用无头 Chrome(译者注:无 UI 界面)进行自动化,那么 Puppeteer 还有一个好用的代码覆盖示例,它可以在页面加载过程中可视化 JS 代码覆盖率。

结束..

JavaScript 会对你的用户体验产生巨大影响;Lighthouse 可以着重改善这部分体验。 要保持较低的 JavaScript 传输和处理时间:

  • 只发送用户需要的代码。
  • 缩小和压缩脚本。
  • 删除未使用的代码和依赖项。

英文原文:

https://dev.to/addyosmani/shine-a-light-on-javascript-performance-with-lighthouse-1opf

目录
相关文章
|
6月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
348 69
|
6月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
173 3
|
5月前
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
101 0
|
6月前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
8月前
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
605 11
|
8月前
|
数据采集 Web App开发 调度
Headless Chrome 优化:减少内存占用与提速技巧
在数据驱动的时代,爬虫技术至关重要。本文聚焦 Headless Chrome 优化方案,解决传统爬虫内存占用高、效率低等问题。通过无界面模式、代理 IP等配置,显著降低资源消耗并提升速度。实际案例中,该方案用于采集汽车点评数据,性能提升明显:内存占用降低 30%-50%,页面加载提速 40%-60%。结合技术架构图与演化树,全面解析爬虫技术演进,助力高效数据采集。
448 0
Headless Chrome 优化:减少内存占用与提速技巧
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
Web App开发 前端开发 Go
使用 Chrome 开发工具调试异步 JavaScript(Debugging Asynchronous JavaScript with Chrome DevTools)
使用 Chrome 开发工具调试异步 JavaScript 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循“署名-非商业用途-保持一致”创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。
2073 0