여러분, 웹 애플리케이션에서 데이터를 불러올 때 매번 서버에 요청하는 건 비효율적이에요. 그래서 우리에게는 '캐싱'이라는 마법 같은 방법이 있습니다! TanStack Query의 staleTime과 gcTime은 이 마법을 가능하게 하는 핵심 도구입니다.
staleTime: 데이터의 신선함을 지키는 시간 🍎
stale (오래되거나 신선하지 않은)
🌟 스토리로 이해하기
상상해보세요. 여러분이 매일 아침 신선한 우유를 냉장고에 보관한다고 가정해봅시다.
- staleTime은 마치 "이 우유는 2시간 동안은 완전히 신선해!"라고 말하는 것과 같아요.
- 2시간 동안은 같은 우유를 다시 사러 갈 필요가 없죠.
실제 코드 예시
const { data } = useQuery({
queryKey: ['products'],
queryFn: fetchProducts,
staleTime: 5 * 60 * 1000 // 5분 동안 데이터 신선
})
gcTime: 캐시 데이터의 수명 🕰️
gc: 가비지 컬렉션 (Garbage Collection)
🌟 창고 관리자의 비유
창고 관리자가 사용하지 않는 상품을 얼마나 오래 보관할지 결정하는 것과 비슷해요.
- 특정 상품(데이터)을 더 이상 사용하지 않으면 일정 시간 후 완전히 제거합니다.
실제 코드 예시
const { data } = useQuery({
queryKey: ['users'],
queryFn: fetchUsers,
gcTime: 10 * 60 * 1000 // 10분 후 캐시에서 제거
})
실전! 언제 어떻게 사용할까? 🛠️
1. 변하지 않는 데이터
- 사용자 프로필, 카테고리 목록 등
- staleTime을 길게 (예: 1시간)
- gcTime을 더 길게 설정
2. 자주 변하는 데이터
- 실시간 주식 정보, 채팅 메시지
- staleTime을 매우 짧게 (0 또는 아주 작은 값)
- gcTime을 적당히 설정
팁! 현명한 캐싱 전략 💡
- 모든 데이터가 같은 캐싱 전략일 필요는 없어요.
- 각 데이터의 특성에 맞게 유연하게 설정하세요.
마무리: 캐싱은 마법! 🌈
TanStack Query의 staleTime과 gcTime은 여러분의 웹 애플리케이션을 더 빠르고 효율적으로 만들어줄 거예요. 데이터를 현명하게 관리하는 여정, 함께 떠나볼까요? 🚀
728x90
'1일 1CS(Computer Science)' 카테고리의 다른 글
리액트의 Props와 State (0) | 2025.04.03 |
---|---|
이벤트 루프에 대해서 설명해주세요. (0) | 2025.03.28 |
reflow와 repaint의 차이점과 최적화 방법 (1) | 2025.03.26 |
실행 컨텍스트란? (0) | 2025.03.26 |
[★중요★]클로저 함수란? (0) | 2025.03.24 |