Gzip 압축 미들웨어로 API 응답 크기 줄이기
API 응답의 크기를 60~80% 줄여 네트워크 전송 시간을 단축하고 트래픽 비용을 절감하는 Gzip 압축 미들웨어 적용 방법
Gzip 압축이 필요한 이유
JSON 형식의 API 응답은 텍스트 기반으로 압축 효율이 뛰어남
1MB 응답을 200~400KB로 크기 감소 가능
네트워크 전송 시간 단축으로 사용자 경험 향상
클라우드 서비스의 Egress 트래픽 비용 절감
Django GzipMiddleware 적용
settings.py의 MIDDLEWARE 리스트에 추가:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.middleware.gzip.GZipMiddleware', # 상단에 위치
'django.contrib.sessions.middleware.SessionMiddleware',
# ... 다른 미들웨어들
]압축 적용 확인 방법
브라우저 개발자 도구
Network 탭에서 API 요청 선택
Response Headers에서
Content-Encoding: gzip확인Size 컬럼에서 전송 크기와 원본 크기 비교
curl 명령어
curl -H "Accept-Encoding: gzip" -I http://127.0.0.1:8000/api/endpoint/실무 고려사항
미들웨어 순서
GzipMiddleware는 MIDDLEWARE 리스트 상단에 위치
응답 수정 미들웨어보다 먼저 실행되어야 함
운영 환경에서는 Nginx 사용 권장
Django 미들웨어보다 성능 우수 (C 모듈로 구현)
정적 파일도 함께 압축 처리
애플리케이션 서버 부하 감소
압축하지 말아야 할 데이터
이미 압축된 파일 (JPEG, PNG, ZIP 등)
수백 바이트 미만의 작은 응답
Last updated
