매일메일 "tanstack-query에서 stale time과 gc time의 차이점에 대해서 설명해주세요"

이수용·2025년 3월 27일

매일메일

목록 보기
4/31
post-thumbnail

🤨 stale time vs gc time

staleTime

데이터를 처음 가져온 후에 그 데이터를 '신선한 상태'로 간주하는 시간으로, staleTime의 기본값은 0이다.

예를 들어 staleTime을 5분으로 설정하게 되면 데이터를 가져오고 나서 5분 동안은 이 데이터를 '신선한 상태'로 판단해서 refetch가 트리거되도 추가적인 네트워크 요청 없이 캐시 데이터를 계속 사용한다.
5분이 지난 후에 refetch가 트리거되면 새로운 요청을 보내 데이터를 갱신한다.

gcTime

해당 쿼리가 더 이상 사용되지 않을 때, 캐시 데이터가 메모리에 얼마나 더 남아 있을지를 정하는 시간으로, tanstack-query에서 설정한 기본 gcTime은 5분이다.
staleTime이 지나면 데이터는 '오래된 상태'가 된다. 하지만 캐시된 데이터는 사용이 가능하므로 새로운 요청을 보내 '신선한 데이터'를 받아오기 전에 임시로 기존 데이터를 표시하는데 활용한다.

예를 들어 gcTime을 10분으로 설정하게 되면 해당 쿼리를 사용하는 컴포넌트가 모두 언마운트된 시점으로부터 10분 후에 캐시에서 데이터가 삭제된다.

🧹 정리
stale time은 데이터를 처음 가져온 후 얼마 동안 네트워크 요청 없이 캐시된 데이터를 사용할지를 정하는 시간
gcTime은 해당 쿼리가 사용되지 않게 된 후에도 캐시에 유지될 시간을 정하는 것

0개의 댓글