Go WebAssembly - alx696/share GitHub Wiki
Go WebAssembly 示例
总结
- 开发不便: wasm模块只能单独一个工程开发, 一般单一实现某个功能.
- 调试不便: Chrome虽然能够查看wasm树, 但是站在web和golang的角度都没法看懂里面的内容.
- 速度较慢: 生成的wasm文件有3MB左右, 初始化完成需要1秒多钟. 文件的下载和初始化都比较慢.
- 功能限制: 受制于web的安全限制等, 有些库在WebAssembly下无法工作(比如GRPC).
优化
体积
- 安装zopfli
$ sudo apt -y install zopfli
; - 压缩wasm文件
$ zopfli *.wasm
; - nginx中为wasm文件启用gzip_static选项;
- 使用wasm.gz文件替代wasm文件使用.
可以在Web服务器中启用压缩, 例如图片缩放示例中wasm文件为3.2MB, 在github.io中加载时被压缩到了910KB. 另外可以将wasm文件以ArrayBuffer的形式缓存到IndexedDB中或是以Cache Storage形式缓存.
参考 https://github.com/golang/go/wiki/WebAssembly#reducing-the-size-of-wasm-files