mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

data-fetching

캐싱 전략.

브라우저 cache, CDN, HTTP 헤더, stale-while-revalidate, 앱 레벨 캐시

캐싱은 이미 가진 데이터/리소스를 재사용해 latency, bandwidth, 서버 부하를 줄이는 전략입니다.

📚 계층

메모리 브라우저 CDN 서버 캐시 계층

계층
MemoryReact state, TanStack Query in-memory
HTTP cacheBrowser cache (Cache-Control)
CDNEdge cached static/API
Service WorkerCache API, offline
ServerRedis, DB query cache

📦 HTTP Cache-Control (요약)

  • max-age=3600 — 3600s fresh
  • no-store — 저장 안 함 (민감 데이터)
  • no-cache — 저장 가능, 사용 전 revalidate
  • private vs public — CDN 캐시 가능 여부
  • conditional GET → 304

📦 Stale-While-Revalidate (SWR)

  • 캐시된 stale 데이터를 먼저 보여주고, 백그라운드 refetch
  • TanStack Query staleTime, Next.js ISR과 개념적으로 유사

🎯 프론트 선택 가이드

  • 정적 asset (hash filename): max-age=31536000, immutable
  • HTML (자주 안 바뀜): SSG + CDN short TTL or ISR
  • API user-specific: private, no-store or short TTL + client cache
  • 목록 + 상세: list cache invalidate on mutation

🔗 참고 자료