gzip压缩无效?
最近有个站点访问特慢,分析后发现其中一个原因就是GZIP竟然没打开。但是配置中也是遇到了问题,这里Mark下。
GZIP的好处
对于JS/HTML等文本文件,压缩后体积为原来的1/3,因此没特殊情况都应该打开下GZIP。
要注意的是Nginx默认是没打开GZIP的,且默认仅对于
text/html
进行压缩。Caddy默认是打开的。
开启GZIP
这里以Nginx为例,需要如下配置才可以解决目标文件类型的压缩。
1 | gzip on; |
当我把这个配置加到我们的服务后,发现并不work。原来是修改没覆盖到网关服务。
服务架构
这里要提下服务的架构,简化下会是下面这样。GZIP如果仅配置到B服务,A服务到B服务之间会以GZIP形式快速传输,但由于A服务没有开启GZIP,那么A服务最终丢给浏览器客户端的还会是解压的内容。因此必须A开启配置才work。
当A也打开GZIP,实际测试浏览器收到的就是开启压缩的内容了。那么B到底还需要开启吗,个人觉得开启肯定更好,毕竟AB之间速度可以加快,只是说A开启否更重要。
决定GZIP work的因素
- 客户端发起请求头中携带了
accept-encoding:gzip
,这个浏览器默认均会携带。 - 服务端支持并开启GZIP。
写在最后
GZIP开启虽然简单,但还是要注意它到底是怎么用的。