spring-boot 开启Gzip解决办法
2017-05-22 16:26
941 查看
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了!!!
如果采用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了!!!
相关文章推荐
- springBoot PUT请求接收不了参数的解决办法
- springboot项目打包后运行出现问题解决办法
- struts2改spring boot过程中一些问题及解决办法记录
- spring boot web项目在IDEA下热部署解决办法(四步搞定)
- 外部Tomcat部署Spring boot自动关闭的解决办法
- spring-boot项目启动失败的一种解决办法:自带的tomcat容器切换成jetty容器
- Intellij IDEA 使用Spring-boot-devTools无效解决办法
- 如何开启GZIP以及开启GZIP后春菜无法显示的解决办法
- Intellij IDEA 使用Spring-boot-devTools无效解决办法
- Spring boot出现java.awt.HeadlessException的解决办法
- Spring boot发送邮件失败时候的解决办法
- Springboot循环依赖解决办法
- idea使用spring-boot-devtools无效解决办法
- Intellij IDEA 使用Spring-boot-devTools无效解决办法
- SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)
- Springboot ServletContextListener @Autowired null 解决办法
- Springboot ServletContextListener @Autowired null 解决办法
- springboot 1.5.2 thymeleaf 标签未关闭异常解决办法
- spring boot:No converter found for return value of type: class另类解决办法
- Spring Boot @PathVariable出现点号"."时导致路径参数截断获取不全的解决办法