一.压缩文件
bash
cd Build/
# 生成 gzip 版本(兼容性最好)
gzip -k -9 BuildWebGL.wasm # -k 保留原文件,-9 最高压缩率
gzip -k -9 BuildWebGL.data
二.nginx配置
bash
server {
location ~* \.(wasm|data)$ {
# 优先使用预压缩文件,找不到才动态压缩
gzip_static on;
# 备用:动态压缩(针对未预压缩的文件)
gzip on;
gzip_vary on;
gzip_types application/wasm application/octet-stream;
gzip_proxied any;
gzip_comp_level 6; # 动态压缩用中等级别,平衡 CPU 和体积
# 强缓存(因为 wasm 文件有哈希名,不会冲突)
expires 1y;
add_header Cache-Control "public, immutable";
}
}
验证:
curl -I -H "Accept-Encoding: gzip" http://your-site/BuildWebGL.wasm
Content-Encoding: gzip
Content-Length: 12582912 (远小于原文件)
三.Unity 自动方案(更省事)
如果你用 Unity 2020.3+,在构建设置里直接开启:
Edit → Project Settings → Player → Publishing Settings
-
Compression Format : 选择
Gzip或Brotli -
Compression Level: Normal 或 High
Unity 会自动生成 .gz 或 .br 文件,你只需上传所有文件,并确保 Nginx 开启 gzip_static on。
总结
| 场景 | 建议 |
|---|---|
| 追求性能 | 预压缩 .gz + gzip_static on |
| 省事为主 | Unity 设置 Compression Format 为 Gzip,上传所有文件(包括 .gz),Nginx 开 gzip_static |
| 极限体积 | 预压缩 .br (Brotli) + brotli_static on,比 gzip 再小 15-20% |
关键 :开启 gzip_static 后,Nginx 会优先找 .gz 文件,找不到才会用 gzip on 动态压缩。这样既保证了性能,又不怕漏配压缩。