Skip to main content
Sonamu의 @api 데코레이터에 compress 옵션을 추가하여 API별로 압축을 세밀하게 제어할 수 있습니다.

기본 사용법

@api 데코레이터에 추가

설정 방법

가장 간단한 방법

우선순위

압축 설정은 다음 순서로 적용됩니다:
  1. @api 데코레이터의 compress (가장 우선)
  2. 전역 plugins.compress 설정
  3. 기본값 (압축 없음)

예시

결과: aggressive 적용 (데코레이터가 우선)

압축 비활성화

특정 API만 압축하지 않으려면:
사용 사례:
  • 이미 압축된 파일 (이미지, 비디오, zip)
  • 매우 작은 응답 (< 100 바이트)
  • 실시간 스트리밍
  • 압축 해제 오류 회피

선택적 압축 (global: false)

기본적으로는 압축하지 않고, 특정 API만 선택적으로 압축하려면:
장점:
  • 불필요한 압축 방지
  • CPU 사용량 최소화
  • 정확한 제어

응답 크기별 전략

작은 응답 (< 1KB)

이유: 압축 오버헤드가 이득보다 큼

중간 응답 (1KB~100KB)

이유: 압축 효과가 좋음

대용량 응답 (> 100KB)

이유: 네트워크 시간 절약이 압축 시간보다 훨씬 중요

콘텐츠 타입별 전략

JSON API

특징: JSON은 압축 효과가 매우 좋음 (70~90% 감소)

이미지/바이너리

이유: 이미 압축된 형식 (JPEG, PNG, MP4 등)

HTML/CSS

특징: 텍스트 기반, 압축 효과 매우 좋음

실전 예제

1. 전자상거래 API

2. 파일 다운로드 API

3. 통계/리포트 API

4. 스트리밍 API

SSR 페이지 압축

SSR 라우트에도 압축 설정이 가능합니다.

조건부 압축

런타임에 조건에 따라 압축을 제어할 수는 없지만, 여러 API로 분리할 수 있습니다:

압축 옵션 오버라이드

전역 설정의 일부만 변경할 수 있습니다:

모니터링

압축 효과를 확인하려면:
브라우저 개발자 도구에서 확인:

주의사항

API별 압축 제어 시 주의사항:
  1. 이미 압축된 콘텐츠는 비활성화: 이미지, 비디오, zip
  2. 작은 응답은 압축 비효율적: < 1KB는 압축 안 하는 게 나음
  3. 스트리밍은 압축 비활성화: SSE, WebSocket
  4. 일관된 전략 사용: 비슷한 API는 같은 설정
  5. 성능 모니터링: 압축으로 인한 CPU 부하 확인

디버깅 팁

1. 압축이 적용되는지 확인

2. 압축 크기 비교

3. 압축 알고리즘 확인

다음 단계

압축 설정

전역 압축 플러그인 설정

압축 프리셋

사전 정의된 압축 설정

성능 최적화

압축 최적화 전략