반응형

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