使用nginx返回gzip类型数据

2019-12-26  本文已影响0人  雷神VeryYoung

背景

系统上线后,其中有一功能是获取客户源站数据,该功能由于客户返回数据量巨大经常超时,客户寻思改返回gzip格式的数据。那开发改了这个功能,苦逼测试就得上吧!

问题

目前测试该功能需要构造mock返回gzip格式数据

解决方案

了解客户侧是用nginx,百度搜了一堆“nginx返回zip压缩包”解决方案,下面这个挺全面的:

        #开启gzip
        gzip  on;
        # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
        gzip_min_length 1k;
        # 设置压缩所需要的缓冲区大小
        gzip_buffers 4 16k;
        #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
        gzip_http_version 1.0;
        #压缩等级 1-9 等级越高,压缩效果越好,节约宽带,但CPU消耗大
        gzip_comp_level 3;
        # 进行压缩的文件类型,默认就已经包含text/html。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
        gzip_types font/ttf font/opentype font/x-woff image/svg+xml;
        # 是否在http header中添加Vary: Accept-Encoding,建议开启
        gzip_vary on;
        # 禁用IE 6 gzip , 因为IE6的某些版本对gzip的压缩支持很不好,会造成页面的假死
        gzip_disable "MSIE [1-6].";

但是太全面了,我只要取其中的几个即可,于是一个个试,最后定位其中两个配置是必须项,必须项如下:

gzip  on;
gzip_types application/json;

其中gzip_types项填你需要压缩的类型,我这边是application/json格式需要压缩。

验证结果

那如何校验是否设置成功了呢?有很多方案,这边介绍比较常见的两种:

验证一

使用curl命令:

curl -I -H "Accept-Encoding: gzip" "http://ip:port/configs"

返回的结果:


测试结果图

返回的结果非gzip格式时是上半部分,返回的结果是gzip格式时是下半部分(多了Content-Encoding: gzip信息)。

验证二

浏览器F12进入开发者工具,返回mock地址:http://ip:port/configs,在开发杂工具中的“Network”选择相关请求可以看到如下图,返回中的请求头(Response Headers)也是多了Content-Encoding: gzip信息。

测试结果图
上一篇下一篇

猜你喜欢

热点阅读