起因很土。帮家里人弄身份证复印件,网上一搜全是「上传图片 → 在线生成」。传身份证这事我自己不敢,又懒得开 PS ,就把去背景模型直接塞进浏览器跑了。 模型得先瘦下来。BiRefNet 原版太大,换成 lite + int8 量化、768² 输入,落到 47MB ,gzip 后 39MB 。首次访问还是肉疼,所以模型放在 R2 + CF 上,多源竞速下载谁先返回用谁,再拿 Cache API 持久缓存,二次访问基本秒开。R2 的 content-encoding 头不可靠,我干脆自己认 gzip magic ,用 DecompressionStream 本地解压。 真正难受的是隔离头。onnxruntime-web 要开多线程 WASM 就得有 SharedArrayBuffer ,而 SAB 要 crossOriginIsolated ,页面必须带 COOP/COEP ,否则只能单线程,慢到不能用。这个头一加,跨源 iframe 就嵌不进来了,我的支付浮层当场被打死,换成 COEP: credentialless 也救不回来。最后是结账页不加隔离头、从隔离页过去时强制硬导航绕...