素材巴巴 > 程序开发 >

Spring Boot 启用Gzip压缩

程序开发 2023-09-03 15:30:25

1、需要在application.properties里启用压缩,并设置压缩支持的格式(默认支持text/html等,但不支持application/json

server.compression.enabled=true
 server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain

2、默认情况下,仅会压缩2048字节以上的内容

#默认就是2048 byte
 server.compression.min-response-size=2048

以上内容,详见 org.springframework.boot.context.embedded.Compression

以及 org.springframework.boot.autoconfigure.web.ServerProperties

 

另外,这个设置本身是由servlet container提供的,所以,也可以在tomcat等的设置里找到。

对tomcat来说,在server.xml 的HTTP/1.1的connector节点中设置:


 

参考:

Spring 官方指导

 

使用Tomcat的gzip功能(压缩请求)

tomcat配置gzip压缩compressionMinSize选项无效

Understanding Gzip Compression in Spring Boot ,Angular Java Application

其他参考:

spring boot 加入gizp 

如果采用jar 的方式不是spring boot 项目:只需在配置文件中开启gzip 压缩就可以了

server.tomcat.remote-ip-header=x-forwarded-for
 server.tomcat.protocol-header=x-forwarded-proto
 server.tomcat.port-header=X-Forwarded-Port
 server.use-forward-headers=true
 server.compression.enabled=true
 server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain
 

但是如果要部署到tomcat,需要如下对tomcat 安装目录下的conf/server.xml 作如下修改:

	   
 

原理:

spring 以jar 的方式发布是采用内置的tomcat运行的, 内部进行一系列的TomcatConnectorCustomizer,EmbededContainerCustomizer 对象的自定义

@Bean
 public EmbeddedServletContainerCustomizer servletContainerCustomizer() {return new EmbeddedServletContainerCustomizer() {@Overridepublic void customize(ConfigurableEmbeddedServletContainer servletContainer) {((TomcatEmbeddedServletContainerFactory) servletContainer).addConnectorCustomizers(new TomcatConnectorCustomizer() {@Overridepublic void customize(Connector connector) {AbstractHttp11Protocol httpProtocol = (AbstractHttp11Protocol) connector.getProtocolHandler();httpProtocol.setCompression("on");httpProtocol.setCompressionMinSize(256);String mimeTypes = httpProtocol.getCompressableMimeTypes();String mimeTypesWithJson = mimeTypes + "," + MediaType.APPLICATION_JSON_VALUE;httpProtocol.setCompressableMimeTypes(mimeTypesWithJson);}});}};
 }
 

如果采用自己安装的tomcat部署, 就要手动开启这些配置就OK了!!!

使用Gzip压缩效果图:

使用前:

使用后:

 


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。