一.压缩文件

cd Build/

# 生成 gzip 版本(兼容性最好)
gzip -k -9 BuildWebGL.wasm  # -k 保留原文件,-9 最高压缩率
gzip -k -9 BuildWebGL.data

二.nginx配置

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 动态压缩。这样既保证了性能,又不怕漏配压缩。

四、宽带也要增加

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐