网站配置Gzip与Brotli压缩实战记录
网站打开慢,很多时候不是服务器性能问题,而是没开压缩。HTML、CSS、JS 这些文本文件体积不小,开了 gzip 或者 Brotli 压缩之后,传输体积能砍掉百分之六七十。这篇文章聊聊怎么在 Nginx 上配置。
压缩是怎么工作的
浏览器请求资源的时候,会在请求头里告诉服务器”我支持 gzip 或者 Brotli”。服务器看到这个头,就把文件压缩一下再传过去。浏览器收到之后解压再显示。
整个过程对用户透明,但传输的数据量小了很多。尤其对文本文件效果显著,图片视频本身已经压缩过,再压没什么意义。
Nginx 开 Gzip
在 Nginx 配置里加一段 gzip 配置就行。开启 gzip、设置压缩级别、指定对哪些文件类型生效。常见的 text/html、text/css、application/javascript、application/json 都应该压。
压缩级别不要开太高,6 左右是性价比最高的。级别越高 CPU 越费,压缩率提升却有限。
Brotli 效果更好
Brotli 是谷歌推的新一代压缩算法,比 gzip 压缩率更高。现代浏览器都支持 Brotli。但 Nginx 默认不带 Brotli 模块,需要编译的时候加上,或者用支持 Brotli 的第三方 Nginx 包。
如果你的 Nginx 环境不好加 Brotli 模块,用 gzip 也完全够用了。Brotli 是锦上添花,不是必须。
怎么验证生效了
改完配置重载 Nginx 之后,打开浏览器开发者工具,看网络请求的响应头。如果看到 Content-Encoding: gzip 或者 br,就说明压缩生效了。
再看传输的资源大小,对比压缩前应该小了一大半。如果没生效,检查一下 MIME 类型有没有配对,有些文件的 Content-Type 写错了会导致不触发压缩。
小结
开压缩是网站优化里性价比最高的一步,几行配置就能让加载速度明显提升。记得只压文本类文件,压缩级别适中,改完用开发者工具验证一下。这个优化做完,用户访问体验会好很多。
压缩常见踩坑点
最常见的坑是只在 HTTP 配置里加了 gzip,HTTPS 站点却没生效。因为 Nginx 配置分 http 和 server 块,要确保你的 gzip 配置在所有 server 块都生效。
另外,如果你用了 CDN,压缩可能是在 CDN 边缘节点做的,源站开不开都无所谓。这时候看 CDN 控制台的响应头就行。
