IT

Nginx에서 Gzip 하면 어떻게 돼?

마시멜로를찾아서 2025. 4. 1. 16:08
반응형

📦 1. Gzip 압축 처리 흐름

  1. 서버:
    • 클라이언트(브라우저)가 gzip 압축을 지원하는 경우, 서버는 응답 데이터를 압축하여 클라이언트로 전송합니다. 이때, 서버는 Content-Encoding: gzip 헤더를 추가합니다.
    • 예를 들어, application/json 응답을 Gzip으로 압축하여 전송.
  2. 브라우저:
    • 클라이언트(브라우저)는 Content-Encoding: gzip 헤더를 보고, 압축된 데이터를 자동으로 해제합니다.
    • 해제된 후, application/json 헤더에 맞춰 JSON 데이터를 정상적으로 파싱합니다.
    이 과정에서 클라이언트 애플리케이션 (Vue) 은 아무런 처리를 하지 않아도 됩니다.

🔧 2. Nginx에서 Gzip 설정 예시

http {
    # Gzip 압축 활성화
    gzip on;
    gzip_comp_level 6;  # 압축 수준 설정 (1~9)
    gzip_min_length 1024;  # 1KB 이상만 압축
    gzip_vary on;  # 캐시 서버에서 Gzip 버전별로 분리 저장
    gzip_proxied any;  # 프록시 서버에서도 Gzip 적용
    gzip_types
        text/plain
        text/css
        application/json
        application/javascript
        text/xml
        application/xml
        application/xml+rss
        text/javascript;
    
    # 압축을 적용할 콘텐츠 유형 정의
}
  • gzip_types: 이 설정은 압축을 적용할 콘텐츠 유형을 지정합니다. 예를 들어, JSON, CSS, JS 등의 파일이 해당됩니다.
  • gzip_min_length: 1KB 이상인 파일에만 압축을 적용하도록 설정합니다.

🌐 3. 헤더 처리

브라우저가 gzip으로 압축된 응답을 받으면, 자동으로 압축을 풀고 이를 처리합니다. 이때 서버에서 응답 헤더는 Content-Encoding: gzip 형태로 제공됩니다.

서버 응답 예시 (압축된 JSON 데이터)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Encoding: gzip
Content-Length: 1024
...
  • Content-Encoding: gzip → 이 헤더는 서버가 응답을 압축했음을 알리는 표시입니다.
  • application/json → 데이터 형식이 JSON임을 나타냅니다.

브라우저 처리

  • 브라우저는 Content-Encoding: gzip을 보고 데이터를 자동으로 압축 해제한 후, application/json에 맞게 처리합니다.
  • Vue 애플리케이션에서는 별도의 압축 해제 작업 없이 정상적인 JSON 데이터를 사용하게 됩니다.

📉 4. Gzip의 장점

  • 속도 향상: 대역폭 절감으로 빠른 전송 속도
  • 트래픽 절감: JS, JSON, CSS 파일 등을 압축하여 네트워크 비용 절감
  • 렌더링 속도 향상: 압축된 데이터 전송 시 페이지 로딩 속도 향상

❓ 5. Gzip 해제를 Vue에서 직접 처리하는 이유는?

Vue 애플리케이션에서 Gzip 해제를 직접 처리할 필요는 없습니다. 브라우저가 압축을 풀어주기 때문에, Vue에서는:

  • Gzip 압축 여부를 신경 쓰지 않고, 정상적인 JSON 데이터를 파싱합니다.
  • Vue나 JavaScript에서는 fetch() 또는 **axios**를 통해 받은 데이터를 그대로 사용하며, 브라우저가 자동으로 압축을 풀어줍니다.

✅ 결론

  • 서버에서 Gzip 압축을 활성화하면, 브라우저가 자동으로 압축을 해제하고, 해당 콘텐츠를 정상적으로 처리합니다.
  • Vue에서 압축을 풀 필요는 없습니다. fetch()나 axios를 통해 데이터를 받을 때, 브라우저가 이미 해제된 데이터를 처리하므로 별도로 신경 쓸 필요가 없습니다.
반응형