Pozostałe odpowiedzi są nieaktualne i / lub przesadnie skomplikowane dla czegoś, co powinno być prostym IMO (jak długo istnieje gzip? Dłużej niż Java ...) Z dokumentacji:
W 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
W 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
Starsze niż 1.2.2:
@Component
public class TomcatCustomizer implements TomcatConnectorCustomizer {
@Override
public void customize(Connector connector) {
connector.setProperty("compression", "on");
connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml");
}
}
Zwróć również uwagę, że będzie to działać TYLKO, jeśli używasz osadzonego tomcat:
Jeśli planujesz wdrożyć na nie osadzonym tomcat, musisz go włączyć w server.xml http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Standard_Implementation
Uwaga dotycząca produkcji IRL:
Również, aby uniknąć tego wszystkiego, rozważ użycie konfiguracji proxy / load balancera przed Tomcat z nginx i / lub haproxy lub podobnym, ponieważ będzie on obsługiwał statyczne zasoby i gzip DUŻO wydajniej i łatwiej niż model wątków Java / Tomcat.
Nie chcesz wrzucać kota do wanny, ponieważ zajmuje się on kompresowaniem rzeczy zamiast obsługiwać żądania (lub bardziej prawdopodobne, że kręci wątki / zjada procesor / stertę, czekając na wystąpienie operacji we / wy bazy danych podczas uruchamiania rachunku AWS, który jest dlaczego tradycyjna Java / Tomcat może nie być dobrym pomysłem na początek, w zależności od tego, co robisz, ale dygresję ...)
refs:
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