Go WebAssembly - alx696/share GitHub Wiki

Go WebAssembly 示例

总结

  1. 开发不便: wasm模块只能单独一个工程开发, 一般单一实现某个功能.
  2. 调试不便: Chrome虽然能够查看wasm树, 但是站在web和golang的角度都没法看懂里面的内容.
  3. 速度较慢: 生成的wasm文件有3MB左右, 初始化完成需要1秒多钟. 文件的下载和初始化都比较慢.
  4. 功能限制: 受制于web的安全限制等, 有些库在WebAssembly下无法工作(比如GRPC).

优化

体积

  1. 安装zopfli $ sudo apt -y install zopfli
  2. 压缩wasm文件 $ zopfli *.wasm
  3. nginx中为wasm文件启用gzip_static选项;
  4. 使用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

参考