这些答案的其余部分已经过时和/或对于应该是简单的 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
早于 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");
}
}
另请注意,这仅在您运行嵌入式 tomcat 时才有效:
如果您计划部署到非嵌入式 tomcat,则必须在 server.xml http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Standard_Implementation 中启用它
IRL 制作说明:
为了避免所有这些,请考虑在 Tomcat 前面使用代理/负载均衡器设置,并带有 nginx 和/或 haproxy 或类似的,因为它将处理静态资产和gzip 比 Java/Tomcat 的线程模型更高效、更容易。
您不想将 'cat 扔进浴缸,因为它忙于压缩内容而不是提供请求(或者更有可能在运行 AWS 时启动线程/占用 CPU/堆等待数据库 IO 发生)这就是为什么传统的 Java/Tomcat 可能不是一个好主意的原因,这取决于你在做什么,但我离题了......)
参考:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/howto.html#how-to-enable-http-response-compression
https://github.com/spring-projects/spring-boot/issues/2031