分享一个小程序资源打包压缩工具

37次阅读

共计 413 个字符,预计需要花费 2 分钟才能阅读完成。

之前研究小程序时发现包体积有限制,较大的资源只能从 CDN 加载。为了节省 CDN 于是把一些资源打成 zip 文件在包里,运行时解压出来使用。

不过 zip 压缩率不高,和 brotli 差很多。当时小程序还不支持原生 br 解压,但有个地方涉及到 br:加载 wasm 时可以直接传入 .wasm.br 文件。于是想到一个方案:把资源打包成一个只有数据段的 wasm,然后压缩,运行时直接从 wasm 导出对象的内存里提取。这样可借助 wasm 调用原生解压,性能很高。而且 wasm 文件头也非常小,只有几十字节。

当然现在微信小程序已支持原生 br 解压,因此无需依赖 wasm 方案,出于兼容仍可使用 .wasm.br 文件,解压时忽略 wasm 头就可以。其他小程序平台例如抖音等,目前还不支持原生 br 解压,因此 .wasm.br 的方案仍可以使用。

前几天捣鼓小程序时回想起这个方案,于是做了个小工具分享下:https://github.com/EtherDream/mini-pack

正文完
 0