概述`postMessage` 默认对对象进行结构化克隆复制,可能产生较大开销。对于支持的对象(如 `ArrayBuffer`、`MessagePort`、`OffscreenCanvas`),可使用 Transferable 进行所有权迁移,实现零拷贝的高效传输。示例// 将 ArrayBuffer 作为可转移对象发送 const buf = new ArrayBuffer(1024) worker.postMessage({ buf }, [buf]) // OffscreenCanvas 传输到 Worker 绘制 const canvas = document.querySelector('canvas') const off = canvas.transferControlToOffscreen() worker.postMessage({ off }, [off]) 工程建议选择传输方式:对大数据优先使用 Transferable;避免不必要的克隆。生命周期:迁移后原上下文不可再使用该对象;管理好所有权与释放。安全与兼容:在支持环境启用;对不支持对象回退到片段传输与重建。参考与验证MDN `postMessage` 与 Structured Clone 文档:https://developer.mozilla.org/docs/Web/API/Worker/postMessageOffscreenCanvas 文档:https://developer.mozilla.org/docs/Web/API/OffscreenCanvasweb.dev 并发与传输指南:https://web.dev/articles/offscreen-canvas

发表评论 取消回复