小编典典

通过RESTful与Spring Boot / MVC / JavaConfig一起使用GZIP压缩

spring

我们将Spring Boot / MVC与基于注释的java-config一起用于一系列RESTful服务,并且我们希望选择性地HTTP GZIP对某些API响应启用流压缩。

我知道我可以在控制器和a中手动完成此操作byte[] @ResponseBody,但是我们更希望依赖SpringMVC基础结构(过滤器/等),并使其自动进行JSON转换和压缩(即该方法返回POJO)。

如何在ResponseBody或嵌入式Tomcat实例中启用GZIP压缩,并且以某种方式我们可以选择性地仅压缩某些响应?

谢谢!

PS .:我们目前没有任何基于XML的配置。


阅读 694

收藏
2020-04-12

共1个答案

小编典典

这些答案的其余部分已经过时和/或过于复杂,以至于应该是简单的IMO(gzip到现在已经存在多长时间了?比Java更长的时间…)。来自文档:

在application.properties 1.3+中

# 
server.compression.enabled=true
# opt in to content types
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
# not worth the CPU cycles at some point, probably
server.compression.min-response-size=10240 

在application.properties 1.2.2-<1.3中

server.tomcat.compression=on
server.tomcat.compressableMimeTypes=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css

Older than 1.2.2:

@Component
public class TomcatCustomizer implements TomcatConnectorCustomizer {

  @Override
  public void customize(Connector connector) {
    connector.setProperty("compression", "on");
    // Add json and xml mime types, as they're not in the mimetype list by default
    connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml");
  }
}
2020-04-12