웹의 본질은 요청을 보내고 응답을 받는 것이며, 웹 서버(WAS)와 웹 브라우저는 이 과정을 반복합니다.
응답: 단순 웹 페이지뿐 아니라 영상, 음성, 이미지 등 모든 HTTP 리소스가 포함됩니다.
성능 목표: 요청을 보냈을 때 가능한 한 빠르게 응답을 받는 것이 중요합니다.
웹 브라우저 최적화: HTTP Cache를 활용하여 웹 페이지 로드 성능 개선.
웹 서버 최적화: 웹 페이지 로드 성능을 개선하여 SEO 친화적인 Performance Metrics 달성.
Performance Metrics
시스템이나 애플리케이션의 성능을 평가하고 분석하기 위해 사용하는 측정 지표(TTFB, FCP, LCP, DCL, FID, TTI, CLS 등)
웹 브라우저: 매번 동일한 요청으로 웹 서버에서 응답을 받아와야 합니다.
웹 서버: 동일한 요청에 대해 매번 응답을 생성하고 반환해야 합니다.
Private Cache: 브라우저가 클라이언트 단에서 캐시를 관리.
Shared Cache: 프록시(Cache 서버) 또는 API 서버 자체가 캐시를 관리.
목표: 네트워크와 서버 자원을 사용하지 않고 빠르게 응답.
효과:
네트워크 트래픽 감소.
즉각적인 응답 제공으로 사용자 경험 향상.
목표: 반복적인 연산과 자원 소모를 줄이고 효율적으로 응답.
효과:
서버 자원의 여유 확보.
다수의 요청에 대해 캐시된 자원을 빠르게 제공.
DDoS 방어 효과: 프록시 캐시를 통한 요청 분산.
웹 브라우저와 웹 서버 사이에서 요청-응답 데이터를 임시로 저장하고 재활용하는 기술입니다.
저장 대상: HTTP 리소스(웹 페이지, 동적 데이터, 이미지 등).
저장 위치:
Private Cache: 브라우저 내부에 저장되어 특정 사용자만 활용.
Shared Cache: 브라우저와 서버 사이의 프록시 또는 API 서버 내부에 저장되어 다수 사용자 활용 가능.
HTTP Cache의 저장 유형
Public Cache: Private Cache와 Shared Cache 모두를 포괄하는 방식.
Private Cache: 특정 브라우저에만 저장.
특징: 브라우저 내부에 위치하여 한 명의 사용자만을 위해 데이터 저장.
제어: 서버의 HTTP Cache 헤더(Cache-Control)를 통해 설정.
활용 사례
오프라인 지원을 위한 PWA의 Service Worker Cache API.
브라우저 디스크 및 메모리 캐시로 반복 요청 시 성능 최적화.
특징: 브라우저와 서버 사이의 프록시 또는 API 서버가 캐시를 관리.
이점
서버 부하 감소.
다수 사용자에게 동일한 캐시된 리소스 제공.
활용 사례: CDN, Forward Proxy, Reverse Proxy.
목적: 서버 측에서의 데이터 생성 비용을 줄이기 위해 캐시 사용.
예시
로컬 캐시: LRU-Cache, Memcache, Ehcache.
글로벌 캐시: Redis(인메모리 기반 NoSQL Key-Value DB).
장점
데이터베이스 대신 빠른 데이터 접근.
주기적 관리로 비활성 데이터를 자동 삭제.
캐시 전략 설계
캐시 저장 주기
max-age 설정으로 데이터 유효 기간 관리.
적절한 주기로 갱신하여 최신 상태 유지.
HTTP 헤더 활용
Cache-Control, ETag, Last-Modified 등 헤더를 통해 캐시 제어.
보안
민감한 데이터는 캐시 금지(Cache-Control: no-store).