이 답변의 나머지 부분은 구식이거나 단순한 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에 배포하려는 경우 server.xml http://tomcat.apache.org/tomcat-9.0-doc/config/http.html#Standard_Implementation 에서 활성화해야합니다.
IRL 제작 참고 :
또한이 모든 것을 방지하려면 nginx 및 / 또는 haproxy 또는 이와 유사한 Tomcat 앞에 프록시 /로드 밸런서 설정을 사용하는 것이 좋습니다. 정적 자산을 처리하고 Java / Tomcat의 스레딩 모델보다 훨씬 효율적이고 쉽게 gzip을 처리 할 수 있기 때문입니다.
요청을 처리하는 대신 (또는 AWS 청구서를 실행하는 동안 데이터베이스 IO가 발생하기를 기다리는 동안 스레드 회전 / CPU / 힙을 먹고 있기 때문에 바쁘기 때문에 '고양이를 욕조에 넣고 싶지 않습니다. 왜 전통적인 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