美文网首页
使用nginx返回gzip类型数据

使用nginx返回gzip类型数据

作者: 雷神VeryYoung | 来源:发表于2019-12-26 15:53 被阅读0次

    背景

    系统上线后,其中有一功能是获取客户源站数据,该功能由于客户返回数据量巨大经常超时,客户寻思改返回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信息。

    测试结果图

    相关文章

      网友评论

          本文标题:使用nginx返回gzip类型数据

          本文链接:https://www.haomeiwen.com/subject/tcdvwqtx.html