加载中...
Web Worker 是浏览器提供的多线程机制,让 JavaScript 在独立线程中执行 CPU 密集型任务,通过消息传递与主线程通信,不阻塞 UI 渲染,是前端处理图像、加密、大数据计算的重要手段。

| 规范来源 | WHATWG Web Workers Living Standard |
| 首次实现 | Firefox 3.5(2009)、Chrome 4(2010) |
| 通信方式 | postMessage / onmessage / Transferable |
Worker 线程与主线程共享同一进程但有独立的事件循环,无法访问 DOM、window、document,只能用 self 访问自身作用域。主线程用 worker.postMessage(data) 传递数据,Worker 通过 onmessage 接收。默认数据传输采用结构化克隆算法(深拷贝),对大型数组会有内存开销;可用 Transferable Objects(ArrayBuffer)转移所有权,零拷贝,原线程立即失去访问权,适合图像帧缓冲传输。[1]
图像/视频处理(像素滤镜、帧解码)、加密解密(大文件哈希、AES 加密)、大型 JSON 解析、3D 物理仿真——这些都是 Worker 的适用场景。Comlink 库(Google Chrome 团队出品)用 Proxy 封装 Worker 的消息通信,让调用 Worker 方法像调用普通异步函数一样自然。SharedArrayBuffer 允许多个 Worker 共享同一块内存,但受 Spectre 漏洞影响,2018 年一度被所有浏览器禁用,2020 年在 COOP/COEP 安全头保护下恢复支持。

| 规范来源 | WHATWG Web Workers Living Standard |
| 首次实现 | Firefox 3.5(2009)、Chrome 4(2010) |
| 通信方式 | postMessage / onmessage / Transferable |
登录 后参与讨论
暂无讨论,来发表第一条评论吧