spring-boot 开启Gzip解决办法

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 作如下修改:

<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
	-->	   
			   
	 
	 <!--开启gzip-->
	 <Connector port ="8080" protocol="HTTP/1.1"  maxHttpHeaderSize ="8192" maxThreads ="150"
 	 minSpareThreads ="25" maxSpareThreads ="75" enableLookups ="false" redirectPort ="8443" acceptCount ="100"
     connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="utf-8"
      compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" 
       compressableMimeType="application/json,application/xml,text/html,text/xml,text/plain"/>

原理:

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

@Bean
public EmbeddedServletContainerCustomizer servletContainerCustomizer() {
    return new EmbeddedServletContainerCustomizer() {
        @Override
        public void customize(ConfigurableEmbeddedServletContainer servletContainer) {
            ((TomcatEmbeddedServletContainerFactory) servletContainer).addConnectorCustomizers(
                    new TomcatConnectorCustomizer() {
                        @Override
                        public 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了!!!






  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值