http에 대해서 공부를 하다가 spring boot로 개발되었던 프로젝트들의 API를 호출해보면서 응답 헤더를 확인해보았다.
호출 후 응답 결과를 보니 기본적으로 서버에서 content-encoding을 따로 적용하지 않는 것을 발견했다.
HTTP 메세지의 크기가 크지 않다면 상관없지만, 메세지의 크기가 크고 트래픽이 높아진다면 네트워크 대역폭 부하가 커져 API 성능이 느려질 수 있기 때문에 고려해야 할 사항이다.
해당 설정은 server.compression.enabled로 기본적으로 false로 설정돼 있었다.
활성화를 위해서는 application.yml에 다음 내용을 넣으면 되겠다.
server:
compression:
enabled: true
mime-types: application/json,application/xml,text/html,text/xml,text/plain
min-response-size: 1024
추가 설명
1. mime-type : 응답 헤더에 content-type으로 표시되는 메세지의 타입에 따라 압축을 활성화할 수 있음.
2. min-response-size : 압축전 메세지의 크기에 따라 해당 크기보다 크면 메세지를 활성화할 수 있음.
여기서 다른 설정을 건들지 않았다면 http/1.1, keep-alive가 활성화 돼 있다.
그러면 응답 헤더는 content-length가 없고, Transfer-Encoding : chunked 헤더로 표시되는데 이 경우에는 min-response-size와 상관없이 압축을 하기 때문에 content-length가 없어서 min-response-size 설정이 먹지 않아 소용이 없긴 하다.
이제 테스트를 해보자.
이렇게 테스트로 같은 api로 호출했을때 gzip 압축을 활성화한 것과 하지 않은 것이 데이터 사이즈 차이가 나는 것을 확인할 수 있다.
'개발 > web' 카테고리의 다른 글
[http] http 메소드, 메소드 속성 (0) | 2024.01.07 |
---|---|
[http] http 개요 (0) | 2024.01.02 |
[http] URI와 웹 브라우저 요청 흐름 (0) | 2023.12.31 |
[http] TCP, UDP (1) | 2023.12.29 |
[http] IP (인터넷 프로토콜) (0) | 2023.12.29 |