百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#1919·rrweb

一个直接被阻止的 <img> 仍会支付完整的内联图像编码费用

作者: michal-baya创建于 2026年9月1日更新于 2026年9月1日

受影响的内容: rrweb-snapshot 和 serializeElementNode。下面的锚点来自 rrweb 2.0.0-alpha.17 版本的捆绑复制(dist/rrweb.js),我直接从这里读取它们;rrweb-snapshot 2.0.1 版本中也保留了相同的顺序。needBlock 会在较早的时间计算(dist/rrweb.js:808),但 img/inlineImages 分支在 :897 执行,在 needBlock 将元素的属性替换为仅包含 class、rr_width 和 rr_height 的地方之前( :952)。因此,对于一个自身被阻止的 <img>,画布绘制和 toDataURL 仍然会完全执行,然后将生成的 rr_dataURL 丢弃。阻止一个 祖先 可以避免此工作,因为子元素在此处停止(recordChild = recordChild && !serializedNode.needBlock, :1095)。

要准确地说明成本:直接阻止的图像不会比未阻止的图像更耗费资源 — 它们的成本相同,结果被丢弃。令人惊讶的是,将元素标记为阻止会抑制输出而不跳过工作,因此无法用于避免成本。

内容来源: rrweb-io/rrweb

查看 GitHub 原文在 GitHub 查看讨论