静态资源合并压缩Nginx配置节省带宽

网络资讯

静态资源合并压缩Nginx配置节省带宽

2026-07-18 18:00


可以改写为 ,Nginx 就会自动将两个文件合并返回。
注意 URL 中的 ?
?
是模块约定的分隔符。

检查压缩和合并效果

验证 gzip 压缩

用浏览器开发者工具(F12)打开 Network 面板,刷新页面后点击任意一个 CSS/JS 请求,查看 Response Headers 中是否包含 Content-Encoding: gzip
如果看到,说明压缩生效。

验证合并功能

访问类似 http://your-domain/assets/?
?style1.css,style2.css
的合并 URL,看返回内容是否包含两个文件的内容,并且响应头中 Content-Type 正确。
也可以对比请求数:原来需要多少个文件,合并后只发了 1 个。

带宽节省估算

可以使用在线带宽压缩前后对比工具(如 GTmetrix、PageSpeed Insights)或直接查看服务器监控的流量统计。
通常开启 gzip 后 CSS/JS 体积减少约 60%-80%,合并请求数减少后总流量下降更明显。

踩坑提醒与高频疑问

问题1:gzip 等级设置过高导致 CPU 飙升

解答gzip_comp_level 超过 7 后压缩率提升很小,CPU 消耗却大增。
建议保持 5-6,如果服务器性能较差可以降到 3。

问题2:concat 合并后浏览器缓存失效

解答:合并后的 URL 会改变(因为 ?
?
后面的文件名变化),建议在 HTML 中动态生成合并 URL 时加上版本号或文件 MD5,确保缓存及时刷新。
同时配置 expires 指令:

location /assets/ {
    expires 30d;
    add_header Cache-Control "public, immutable";
}

问题3:宝塔面板怎么添加 concat 模块?

解答:宝塔官方未默认集成,需要自行编译。
可以在面板的“软件商店 - Nginx - 设置 - 安装扩展 - 自定义编译”中勾选 ngx_http_concat_module 后重新安装。
如果嫌麻烦,也可以使用前端构建工具(如 Webpack)在构建时提前合并文件,Nginx 只做压缩和缓存。

问题4:gzip 已开启但某些资源没压缩

解答:检查 gzip_types 是否包含对应的 MIME 类型,特别是一些较新的格式如 application/wasmimage/avif
另外确保资源大小超过 gzip_min_length

如果你正在处理静态资源合并压缩以节省带宽的场景,建议先按照本文步骤依次开启 gzip 和 concat(或前端合并),然后通过浏览器验证效果。
如果遇到异常,优先回看避坑部分和上面的 FAQ,大部分问题都是配置遗漏或模块缺失导致。


label
Nginx压缩 静态资源合并 gzip配置 节省带宽 网站优化 服务器运维