一灰灰blog 一灰灰blog
首页
  • InfluxDB
  • MongoDB
  • MySql
  • 基础系列
  • DB系列
  • 搜索系列
  • MQ系列
  • WEB系列
  • 中间件
  • 运维
  • SpringSecurity
  • SpringCloud
  • QuickAlarm
  • QuickCrawer
  • QuickFix
  • QuickMedia
  • QuickSpi
  • QuickTask
  • 高可用
  • 分类
  • 标签
  • 归档
  • 收藏
  • 关于
GitHub (opens new window)

一灰灰blog

资深搬运工
首页
  • InfluxDB
  • MongoDB
  • MySql
  • 基础系列
  • DB系列
  • 搜索系列
  • MQ系列
  • WEB系列
  • 中间件
  • 运维
  • SpringSecurity
  • SpringCloud
  • QuickAlarm
  • QuickCrawer
  • QuickFix
  • QuickMedia
  • QuickSpi
  • QuickTask
  • 高可用
  • 分类
  • 标签
  • 归档
  • 收藏
  • 关于
GitHub (opens new window)
  • 基础系列

  • DB系列

  • 搜索系列

  • MQ系列

  • WEB系列

    • Request

    • Response

      • 【WEB系列】Freemaker环境搭建
      • 【WEB系列】Thymeleaf环境搭建
      • 【WEB系列】Beetl环境搭建
      • 【WEB系列】返回文本、网页、图片的操作姿势
      • 【WEB系列】请求重定向
      • 【WEB系列】404、500异常页面配置
      • 【WEB系列】全局异常处理
      • 【WEB系列】自定义异常处理HandlerExceptionResolver
      • 【WEB系列】开启GZIP数据压缩
        • I. gizp压缩配置
          • 1. 配置
          • 2. 测试
          • 3. 说明
        • II. 其他
          • 0. 项目
          • 1. 一灰灰Blog
      • 【WEB系列】RestTemplate 4xx/5xx 异常信息捕获
      • 【WEB系列】自定义返回Http Code的n种姿势
      • 【WEB系列】异步请求知识点与使用姿势小结
      • 【WEB系列】SSE服务器发送事件详解
      • 【WEB系列】thymeleaf foreach踩坑记录
      • 【WEB系列】如何支持下划线驼峰互转的传参与返回
    • RestTemplate

    • WebClient

    • WebFlux

    • WebSocket

    • Web三剑客

    • 实例

    • 其他

  • 中间件

  • 运维

  • SpringSecurity

  • SpringCloud

  • Spring系列
  • WEB系列
  • Response
一灰灰
2019-11-20

【WEB系列】开启GZIP数据压缩

本篇可以归纳在性能调优篇,虽然内容非常简单,但效果可能出乎预料的好;

分享一个真实案例,我们的服务部署在海外,国内访问时访问服务时,响应有点夸张;某些返回数据比较大的接口,耗时在600ms+上,然而我们的服务rt却是在20ms以下,绝大部分的开销都花在了网络传输上

针对这样的场景,除了买云服务商的网络通道之外,另外一个直观的想法就是减少数据包的大小,直接在nginx层配置gzip压缩是一个方案,本文主要介绍下,SpringBoot如何开启gzip压缩

# I. gizp压缩配置

# 1. 配置

SpringBoot默认是不开启gzip压缩的,需要我们手动开启,在配置文件中添加两行

server:
  compression:
    enabled: true
    mime-types: application/json,application/xml,text/html,text/plain,text/css,application/x-javascript
1
2
3
4

注意下上面配置中的mime-types,在spring2.0+的版本中,默认值如下,所以一般我们不需要特意添加这个配置

// org.springframework.boot.web.server.Compression#mimeTypes
/**
 * Comma-separated list of MIME types that should be compressed.
 */
private String[] mimeTypes = new String[] { "text/html", "text/xml", "text/plain",
		"text/css", "text/javascript", "application/javascript", "application/json",
		"application/xml" };
1
2
3
4
5
6
7

# 2. 测试

写一个测试的demo

@RestController
public class HelloRest {
    @GetMapping("bigReq")
    public String bigReqList() {
        List<String> result = new ArrayList<>(2048);
        for (int i = 0; i < 2048; i++) {
            result.add(UUID.randomUUID().toString());
        }
        return JSON.toJSONString(result);
    }
}
1
2
3
4
5
6
7
8
9
10
11

下面是开启压缩前后的数据报对比

# 3. 说明

虽然加上了上面的配置,开启了gzip压缩,但是需要注意并不是说所有的接口都会使用gzip压缩,默认情况下,仅会压缩2048字节以上的内容

如果我们需要修改这个值,通过修改配置即可

server:
  compression:
    min-response-size: 1024
1
2
3

# II. 其他

# 0. 项目

# web系列博文

  • 191018-SpringBoot系列教程web篇之过滤器Filter使用指南扩展篇 (opens new window)
  • 191016-SpringBoot系列教程web篇之过滤器Filter使用指南 (opens new window)
  • 191012-SpringBoot系列教程web篇之自定义异常处理HandlerExceptionResolver (opens new window)
  • 191010-SpringBoot系列教程web篇之全局异常处理 (opens new window)
  • 190930-SpringBoot系列教程web篇之404、500异常页面配置 (opens new window)
  • 190929-SpringBoot系列教程web篇之重定向 (opens new window)
  • 190913-SpringBoot系列教程web篇之返回文本、网页、图片的操作姿势 (opens new window)
  • 190905-SpringBoot系列教程web篇之中文乱码问题解决 (opens new window)
  • 190831-SpringBoot系列教程web篇之如何自定义参数解析器 (opens new window)
  • 190828-SpringBoot系列教程web篇之Post请求参数解析姿势汇总 (opens new window)
  • 190824-SpringBoot系列教程web篇之Get请求参数解析姿势汇总 (opens new window)
  • 190822-SpringBoot系列教程web篇之Beetl环境搭建 (opens new window)
  • 190820-SpringBoot系列教程web篇之Thymeleaf环境搭建 (opens new window)
  • 190816-SpringBoot系列教程web篇之Freemaker环境搭建 (opens new window)
  • 190421-SpringBoot高级篇WEB之websocket的使用说明 (opens new window)
  • 190327-Spring-RestTemplate之urlencode参数解析异常全程分析 (opens new window)
  • 190317-Spring MVC之基于java config无xml配置的web应用构建 (opens new window)
  • 190316-Spring MVC之基于xml配置的web应用构建 (opens new window)
  • 190213-SpringBoot文件上传异常之提示The temporary upload location xxx is not valid (opens new window)

# 项目源码

  • 工程:https://github.com/liuyueyi/spring-boot-demo (opens new window)
  • 项目:https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/210-web-filter (opens new window)

# 1. 一灰灰Blog

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

  • 一灰灰Blog个人博客 https://blog.hhui.top (opens new window)
  • 一灰灰Blog-Spring专题博客 http://spring.hhui.top (opens new window)

一灰灰blog

编辑 (opens new window)
#gzip
上次更新: 2021/10/15, 19:56:22
【WEB系列】自定义异常处理HandlerExceptionResolver
【WEB系列】RestTemplate 4xx/5xx 异常信息捕获

← 【WEB系列】自定义异常处理HandlerExceptionResolver 【WEB系列】RestTemplate 4xx/5xx 异常信息捕获→

最近更新
01
【基础系列】基于maven多环境配置
04-25
02
【WEB系列】内嵌Tomcat配置Accesslog日志文件生成位置源码探索
04-24
03
【搜索系列】ES查询常用实例演示
04-18
更多文章>
Theme by Vdoing | Copyright © 2017-2022 一灰灰Blog
MIT License | 鄂ICP备18017282号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×