คำตอบที่เหลือเหล่านี้ล้าสมัยและ / หรือด้านบนซับซ้อนสำหรับบางสิ่งที่ควรเป็น 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");
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 ลงในอ่างเพราะมันยุ่งอยู่กับการบีบอัดสิ่งต่างๆแทนที่จะให้บริการตามคำขอ (หรือมีแนวโน้มที่จะปั่นกระทู้ / กิน CPU / heap นั่งรอให้ฐานข้อมูล IO เกิดขึ้นในขณะที่เรียกเก็บเงิน AWS ของคุณซึ่งก็คือ ทำไม 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