我正在使用Spring (v1.2)和AngularJS应用程序。我试图在我们的应用程序中实现GZip压缩,以提高性能。
我想压缩我的JSON响应。我已经做过的..。
1.在tomcat (弹簧引导嵌入式)中启用压缩,如下所示。参考资料: Stackoverflow..。Using GZIP compression with Spring Boot/MVC/JavaConfig with RESTful和spring文档..。https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-servlet-containers.html#how-to-enable-http-response-compression
@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);
}
}
);
}
};
}现在,内容编码:gzip在响应头中缺少。因此,上面的代码对没有任何影响,到现在为止是。我的问题是..。1.如何在spring中设置“内容编码:gzip”?->我在spring控制器(如httpservletresponse.addHeader("content-encoding","gzip") )中尝试过
但是,这一次,响应体在浏览器上为空(在添加..httpservletresponse.addHeader("content-encoding","gzip")之后)
httpProtocol.setCompression("on");这样的压缩时,需要通过春季引导来自动处理?->需要创建一个servlet过滤器吗?的底线是:我不清楚“普通servlet实现方式”和"spring“实现方式之间的区别。
在Spring上下文中,有人能列出所需的步骤和不需要的步骤吗?
发布于 2016-03-16 05:10:00
我没有在SpringBoot1.2中进行测试,但是在SpringBoot1.3中,为了启用REST响应的压缩,您需要在application.properties中启用压缩
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,application/javascript,text/html,text/xml,text/plain在此之后,所有可缓存的请求(不是POST、PUT等)都会被压缩,比server.compression.min-response-size大。
附注:
作为响应,Using GZIP compression with Spring Boot/MVC/JavaConfig with RESTful存在在SpringBoot1.2中启用压缩的配置:
server.tomcat.compression: on
server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plainhttps://stackoverflow.com/questions/33709681
复制相似问题