data-fetching
캐싱 전략.
브라우저 cache, CDN, HTTP 헤더, stale-while-revalidate, 앱 레벨 캐시
캐싱은 이미 가진 데이터/리소스를 재사용해 latency, bandwidth, 서버 부하를 줄이는 전략입니다.
📚 계층
| 계층 | 예 |
|---|---|
| Memory | React state, TanStack Query in-memory |
| HTTP cache | Browser cache (Cache-Control) |
| CDN | Edge cached static/API |
| Service Worker | Cache API, offline |
| Server | Redis, DB query cache |
📦 HTTP Cache-Control (요약)
max-age=3600— 3600s freshno-store— 저장 안 함 (민감 데이터)no-cache— 저장 가능, 사용 전 revalidateprivatevspublic— 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-storeor short TTL + client cache - 목록 + 상세: list cache invalidate on mutation
🔗 참고 자료
- MDN: HTTP caching — HTTP 캐시 모델과 검증 흐름을 설명한다.
- MDN: Cache-Control — Cache-Control 지시어 레퍼런스다.
- RFC 9111: HTTP Caching — HTTP 캐싱 표준 명세다.
- TanStack Query Caching — 클라이언트 쿼리 캐시 관점을 보완한다.
