GZIP (Content-Encoding: gzip)
gzip은 웹에서 데이터 전송 시 사용되는 압축 방식으로, 응답 데이터를 압축해 전송함으로써 전송 속도를 높이고 대역폭을 절약한다.
텍스트 데이터 혹은 json 과 같은 웹 응답 데이터를 압축하면 성능을 올리는데 도움이 된다.
주로 HTTP 응답에서 사용되며, Content-Encoding 헤더에 명시된다.
1. 요청 헤더 (클라이언트 → 서버)
GET /index.html HTTP/1.1 Host: example.com Accept-Encoding: gzip, deflate
- gzip: GZIP 압축을 지원함
- deflate: DEFLATE 압축을 지원함.
2. 응답 헤더 (서버 → 클라이언트)
HTTP/1.1 200 OK Content-Encoding: gzip Content-Type: text/html; charset=UTF-8
- Content-Encoding: gzip → 서버가 콘텐츠를 GZIP 방식으로 압축했음을 의미함.
동작 원리
- 클라이언트가 Accept-Encoding: gzip을 요청 헤더에 포함.
- 서버가 이를 인식하고, 콘텐츠를 GZIP 방식으로 압축해 전송.
- 클라이언트는 해당 압축을 해제하여 원래의 콘텐츠를 표시.
gzip 이 효과적인 경우
- 텍스트 기반 파일: HTML, CSS, JavaScript, JSON, XML, SVG 등
- 웹 API 응답 데이터 (특히 JSON, XML)
spring boot 애플리케이션에 적용하기
application.yaml 파일에 다음과 같은 설정을 통해서 gzip 을 이용해서 응답할 수 있다.
# GZIP Compression 활성화
server.compression.enabled=true
# 최소 크기(바이트 단위). 이보다 작은 응답은 압축되지 않음
server.compression.min-response-size=1024
# 압축할 MIME 유형 (Media Type)
server.compression.mime-types=text/html,text/xml,text/plain,text/css,application/javascript,application/json
실제 성능 향상은 (조만간 측정 후 올리겠다....)
'개발 > TIL' 카테고리의 다른 글
로그인 시 refresh token 을 사용하는 이유와 frontend - backend에서 주의할 점 (3) | 2025.02.23 |
---|---|
spring boot 애플리케이션에서 null 데이터 처리하기 (0) | 2025.02.22 |
Java의 Optional<T>로 안전하게 null 데이터 처리하기 (0) | 2025.02.20 |
default 를 이용해서 interface 에 메서드 정의하기 (0) | 2025.02.19 |
JpaRepository 에서 deleteAllInBatch 로 효율적인 삭제하기 (feat. vs deleteAll) (1) | 2025.02.18 |