Web Worker优化长任务:避免页面卡顿的实用指南
创作时间:
2025-01-21 21:28:24
作者:
@小白创作中心
Web Worker优化长任务:避免页面卡顿的实用指南
由于浏览器GUI渲染线程与JavaScript引擎线程是互斥的关系,当页面中存在大量长任务时,会导致页面UI阻塞,出现界面卡顿、掉帧等情况。
查看页面的长任务
要查看页面中的长任务,可以使用浏览器的Performance工具:
- 打开浏览器的开发者工具
- 选择Performance标签
- 点击Start按钮开始录制
- 在录制结束后,展开Main选项
在Performance面板中,会看到一些红色的三角形标记,这些标记标识的就是长任务。长任务是指执行时间超过50ms的任务。
测试实验
下面通过一个实验来演示长任务对页面的影响:
let sum = 0;
for (let i = 0; i < 200000; i++) {
for (let i = 0; i < 10000; i++) {
sum += Math.random()
}
}
如果将上述代码直接在主线程中执行,计算过程中页面会持续卡死,无法进行任何操作。
使用Web Worker优化长任务
Web Worker可以在后台线程中运行脚本,从而避免阻塞主线程。下面是使用Web Worker执行上述计算任务的示例:
worker.js
onmessage = function (e) {
// onmessage获取传入的初始值
let sum = e.data;
for (let i = 0; i < 200000; i++) {
for (let i = 0; i < 10000; i++) {
sum += Math.random()
}
}
// 将计算的结果传递出去
postMessage(sum);
}
当使用Web Worker执行上述代码时,计算过程中页面仍然可以正常操作,不会出现卡顿现象。
考虑Web Worker的通信时长
使用Web Worker并不是没有代价的,还需要考虑通信时长的问题。例如,一个运算任务本身执行时间为100ms,但如果Web Worker的通信时长为300ms,那么使用Web Worker反而可能会使整体执行时间更长。
下图展示了创建和加载Web Worker脚本的通信时长:
因此,在决定是否使用Web Worker时,需要评估任务的运算时长减去通信时长是否大于50ms。如果满足这个条件,推荐使用Web Worker来优化长任务。
热门推荐
大尺寸电视选哪种壁挂架最好?这份选购指南请收好
回报率跑赢存款利率!租金能否止跌回稳?
北京门头沟房屋装修设计三室一厅,打造舒适健康的老年人居住环境!
65寸电视安装攻略:完美高度解析
书法名家联手医疗专家,中西医结合送福迎春
怀化至重庆沿途美景与秘境探秘
从自信到成功:名字对个人发展的双重影响
赤兔马绝食而亡,演绎关羽麦城之战的忠义绝唱
赤兔马铠获取攻略:5种途径+升级技巧详解
从大滚锅到珍珠泉:腾冲热海摄影攻略
云南腾冲:火山温泉煮蛋,古镇藏书,银杏染金
云南和顺古镇晋升5A景区,中西合璧建筑群展现丝路辉煌
一文读懂中国警衔:从总警监到二级警员的十三级体系
总警监到警员:中国警衔制度全解析
在美买房投资,要知晓房屋类型及涨幅空间
两层别墅设计大全:如何优化空间布局提升居住舒适度?
智能家居网关:跨品牌设备无缝自动化联动攻略
买楼房必看:十要诀助你选到风水好房
139㎡现代简约住宅:玄关设计成亮点,每个细节都充满匠心
攻克中考数学填空题:八种实用技巧全解析
从基础到思想:构建高考数学解题思维体系
韶关丹霞山摄影指南:捕捉最美瞬间
韶关丹霞地貌:秋天最美的打卡地
韶关三景:丹崖、禅寺、古道的文化探秘
最新版!北京地铁首末车时刻表/线路图
手机号码隐私泄露,你中招了吗?
揭秘最新电信诈骗套路:小心你的手机号!
从Cut Away到Jump Cut:一文掌握8大剪辑技巧
双十一不只买买买,同学聚会这样应对最优雅
海螺沟:贡嘎山下的冰雪温泉,中国最大冰瀑布所在地