gzip压缩无效?

最近有个站点访问特慢,分析后发现其中一个原因就是GZIP竟然没打开。但是配置中也是遇到了问题,这里Mark下。

GZIP的好处

  1. 对于JS/HTML等文本文件,压缩后体积为原来的1/3,因此没特殊情况都应该打开下GZIP。

  2. 要注意的是Nginx默认是没打开GZIP的,且默认仅对于text/html进行压缩。Caddy默认是打开的。

开启GZIP

这里以Nginx为例,需要如下配置才可以解决目标文件类型的压缩。

1
2
gzip on;
gzip_types text/plain application/xml text/css application/javascript application/json text/javascript text/html; # 启用对指定类型的压缩

当我把这个配置加到我们的服务后,发现并不work。原来是修改没覆盖到网关服务。

服务架构

这里要提下服务的架构,简化下会是下面这样。GZIP如果仅配置到B服务,A服务到B服务之间会以GZIP形式快速传输,但由于A服务没有开启GZIP,那么A服务最终丢给浏览器客户端的还会是解压的内容。因此必须A开启配置才work。

https://static.1991421.cn/2024/2024-12-14-230259.jpeg

当A也打开GZIP,实际测试浏览器收到的就是开启压缩的内容了。那么B到底还需要开启吗,个人觉得开启肯定更好,毕竟AB之间速度可以加快,只是说A开启否更重要。

决定GZIP work的因素

  1. 客户端发起请求头中携带了accept-encoding:gzip,这个浏览器默认均会携带。
  2. 服务端支持并开启GZIP。

写在最后

GZIP开启虽然简单,但还是要注意它到底是怎么用的。