HTTP Cache: 웹 브라우저와 웹 서버의 부하 완화와 성능 개선

민준·2024년 12월 29일
post-thumbnail

1. 웹 서버와 웹 브라우저의 요청-응답 구조

  • 웹의 본질은 요청을 보내고 응답을 받는 것이며, 웹 서버(WAS)와 웹 브라우저는 이 과정을 반복합니다.

  • 응답: 단순 웹 페이지뿐 아니라 영상, 음성, 이미지 등 모든 HTTP 리소스가 포함됩니다.

  • 성능 목표: 요청을 보냈을 때 가능한 한 빠르게 응답을 받는 것이 중요합니다.

웹 성능 개선의 두 가지 방향

  • 웹 브라우저 최적화: HTTP Cache를 활용하여 웹 페이지 로드 성능 개선.

  • 웹 서버 최적화: 웹 페이지 로드 성능을 개선하여 SEO 친화적인 Performance Metrics 달성.

Performance Metrics
시스템이나 애플리케이션의 성능을 평가하고 분석하기 위해 사용하는 측정 지표(TTFB, FCP, LCP, DCL, FID, TTI, CLS 등)


2. 요청-응답에서 발생하는 부하

문제점

  • 웹 브라우저: 매번 동일한 요청으로 웹 서버에서 응답을 받아와야 합니다.

  • 웹 서버: 동일한 요청에 대해 매번 응답을 생성하고 반환해야 합니다.

해결책

  • HTTP Cache: 재사용 가능한 응답을 저장하고 필요 시 반환하여 부하를 줄이는 방식.

두 가지 주요 캐시 전략:

  • Private Cache: 브라우저가 클라이언트 단에서 캐시를 관리.

  • Shared Cache: 프록시(Cache 서버) 또는 API 서버 자체가 캐시를 관리.


3. HTTP Cache로 성능 개선

3.1. 웹 브라우저의 캐시 활용

  • 목표: 네트워크와 서버 자원을 사용하지 않고 빠르게 응답.

  • 효과:
    네트워크 트래픽 감소.

    즉각적인 응답 제공으로 사용자 경험 향상.

3.2. 웹 서버의 캐시 활용

  • 목표: 반복적인 연산과 자원 소모를 줄이고 효율적으로 응답.

  • 효과:
    서버 자원의 여유 확보.

    다수의 요청에 대해 캐시된 자원을 빠르게 제공.

    DDoS 방어 효과: 프록시 캐시를 통한 요청 분산.


4. HTTP Cache란?

  • 웹 브라우저와 웹 서버 사이에서 요청-응답 데이터를 임시로 저장하고 재활용하는 기술입니다.

  • 저장 대상: HTTP 리소스(웹 페이지, 동적 데이터, 이미지 등).

  • 저장 위치:

    • Private Cache: 브라우저 내부에 저장되어 특정 사용자만 활용.

    • Shared Cache: 브라우저와 서버 사이의 프록시 또는 API 서버 내부에 저장되어 다수 사용자 활용 가능.

  • HTTP Cache의 저장 유형

    • Public Cache: Private Cache와 Shared Cache 모두를 포괄하는 방식.

    • Private Cache: 특정 브라우저에만 저장.


5. HTTP Cache의 종류

5.1. Private Cache

  • 특징: 브라우저 내부에 위치하여 한 명의 사용자만을 위해 데이터 저장.

  • 제어: 서버의 HTTP Cache 헤더(Cache-Control)를 통해 설정.

  • 활용 사례
    오프라인 지원을 위한 PWA의 Service Worker Cache API.

    브라우저 디스크 및 메모리 캐시로 반복 요청 시 성능 최적화.

5.2. Shared Cache

  • 특징: 브라우저와 서버 사이의 프록시 또는 API 서버가 캐시를 관리.

  • 이점
    서버 부하 감소.

    다수 사용자에게 동일한 캐시된 리소스 제공.

  • 활용 사례: CDN, Forward Proxy, Reverse Proxy.

6. 서버 캐시와 HTTP Cache의 차이

서버 캐시

  • 목적: 서버 측에서의 데이터 생성 비용을 줄이기 위해 캐시 사용.

  • 예시

    • 로컬 캐시: LRU-Cache, Memcache, Ehcache.

    • 글로벌 캐시: Redis(인메모리 기반 NoSQL Key-Value DB).

  • 장점
    데이터베이스 대신 빠른 데이터 접근.

    주기적 관리로 비활성 데이터를 자동 삭제.

7. HTTP Cache 사용 시 주의점

  • 캐시 전략 설계

  • 캐시 저장 주기
    max-age 설정으로 데이터 유효 기간 관리.

    적절한 주기로 갱신하여 최신 상태 유지.

  • HTTP 헤더 활용
    Cache-Control, ETag, Last-Modified 등 헤더를 통해 캐시 제어.

  • 보안
    민감한 데이터는 캐시 금지(Cache-Control: no-store).

0개의 댓글