SpringBoot使用GZIP压缩反回数据问题

 更新时间:2025年04月21日 16:59:19   作者:Floating Snow  
这篇文章主要介绍了SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SpringBoot使用GZIP压缩反回数据

1、初识gzip

第一次看到或者说注意到gzip的时候是在做数据爬虫的时候,需要爬取第三方网站的图片,开始写的爬虫有问题,爬到的图片都不能展示,当然跟这个gzip压缩没关系,但是当时以为是这个东西再作祟,就看了下相关的资料。

2、gzip是什么,可以干什么?

gzip是一种压缩方式,就是对数据进行压缩,使其变得更小,节省硬盘资源。

主要是用来压缩数据的算法,具体实现这里略过。

3、SpringBoot(server)使用gzip压缩

我们的boot应用使用gzip压缩的话,意思就是说在传输的时候对数据进行格gzip编码,浏览器自己会对接收到的数据进行解码。

所以我们在boot应用中使用这个gzip的目的就是为了减少中间过程流量的传输,缩短数据交互的时间。

4、在什么情况下使用gzip然后Http传输数据

我的策略是当数据大于1kb时,我在使用该方式进行传输,当数据比较小的时候使用gzip的话成本比较大,本来数据量不大,有的压缩可能比不压缩还大,所以没有意义。

5、SpringBoot(Tomcat)情况下

使用gzip进行Http传输的配置如下:

yml配置如下:

  compression:
    enabled: true
    min-response-size: 1024
    mime-types:
    - image/png
    - image/jpeg
    - image/jpg
    - text/html
    - application/javascript
    - text/css
    - application/octet-stream
    - application/json   

6、使用gzip进行传输的好处(火狐浏览器)

打开浏览器,按F12进入开发者模式,然后点击网络,然后访问自己的Boot应用。

传输的内容大小缩小了,这样的话就是说传输所需的流量肯定会侠少,页面加载速度可能会变快,当加载的数据量达到一定程度时可以看出来,这里测试的数据量比较小。

7、使用gzip的坏处

有利必然有弊端,这里数据量传输虽然是减少了,但是你需要知道的是这个server在反回数据时对数据进行gzip压缩的时候肯定是耗费资源的,浏览器解析的话肯定也是耗费资源的,不过个人感觉这么大(不算大)的数据进行压缩对CPU来说不过是秒秒钟的事情。

8、Http传输中Server的选择

可以在nginx层处理,也可以在tomcat层处理,看自己的需求,但是两个都进行处理的话结果可能会出现问题。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈Java中常用数据结构的实现类 Collection和Map

    浅谈Java中常用数据结构的实现类 Collection和Map

    下面小编就为大家带来一篇浅谈Java中常用数据结构的实现类 Collection和Map。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • 详解Maven profile配置管理及激活profile的几种方式

    详解Maven profile配置管理及激活profile的几种方式

    这篇文章主要介绍了详解Maven profile配置管理及激活profile的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Spring Boot使用Allatori代码混淆的方法

    Spring Boot使用Allatori代码混淆的方法

    这篇文章主要介绍了Spring Boot使用Allatori代码混淆的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • java 算法之快速排序实现代码

    java 算法之快速排序实现代码

    这篇文章主要介绍了java 算法之快速排序实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java微信公众平台开发(9) 关键字回复以及客服接口实现

    Java微信公众平台开发(9) 关键字回复以及客服接口实现

    这篇文章主要为大家详细介绍了Java微信公众平台开发第九步,关键字回复以及客服接口实现,以及遇到该公众号暂时无法提供服务的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java远程调用组件Feign技术使用详解

    Java远程调用组件Feign技术使用详解

    Feign是Netflix公司开发的一个声明式的REST调用客户端; Ribbon负载均衡、 Hystrⅸ服务熔断是我们Spring Cloud中进行微服务开发非常基础的组件,在使用的过程中我们也发现它们一般都是同时出现的,而且配置也都非常相似
    2022-11-11
  • Java求质数的几种常用算法分析

    Java求质数的几种常用算法分析

    这篇文章主要介绍了Java求质数的几种常用算法,结合实例形式分析了三种比较常见的求质数算法原理及相关实现技巧,需要的朋友可以参考下
    2018-12-12
  • Java Benchmark 基准测试的实例详解

    Java Benchmark 基准测试的实例详解

    这篇文章主要介绍了Java Benchmark 基准测试的实例详解的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下
    2017-08-08
  • java开发微信公众号支付

    java开发微信公众号支付

    这篇文章主要给大家结合微信支付接口开发的实践,从获取用户授权到各主要接口的使用方法等方面介绍微信支付的关键点技术,有需要的小伙伴可以参考下
    2015-08-08
  • Java @RequestMapping注解功能使用详解

    Java @RequestMapping注解功能使用详解

    通过@RequestMapping注解可以定义不同的处理器映射规则,下面这篇文章主要给大家介绍了关于SpringMVC中@RequestMapping注解用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11

最新评论