[Tanstack Query] stale & cache time

ahyes·2023년 11월 19일

Tanstack query에는 두가지 개념이 있다.

stale

정해진 시간(기본 0초)동안 데이터의 신선함(최신 데이터인지)을 보장하는 시간
데이터는 처음에 fresh 상태였다 stale time이 지나면 stale 상태로 변한다.

cache

우리가 아는 그 캐시
설정 되어있는 시간 만큼(기본 5분) 기존의 데이터를 메모리에 저장해놓는다.

그냥 생각해봤을 때는 stale만 사용해도 될 것 같기도하고, cache만 사용해도 될 것 같은데
Tanstack Query는 왜 두 개념을 모두 사용할까?

동작 방식

만약 stale time이 10초이고 cache time을 5분으로 설정해놓았다면..

API를 불러왔을 때 불러온 fresh한 데이터는 10초 뒤 stale이 될 것이고 5분간 캐시에 남아있을 것이다.
만약 캐시가 삭제되기 전 다시 같은 API를 호출한다면 데이터가 stale하기 때문에 refetching 될 것이고 불러오는 동안 UI는 어떤 데이터를 보여줘야 할까?

이때 캐시에 남아있는 데이터를 보여주고 있다 새로 불러온 데이터가 도착하면 다시 저장해 이 정보를 보여줄 것이다. 여기서 중요한 부분은 캐시가 남아있다고 refetching하지 않는 것이 아니다.
캐시에 남아있는 데이터는 refetching 하기 전 UI에 보여주는 사용자가 서비스를 원활하게 이용할 수 있도록 해준다.

추가로, 만약 cache time에 5분으로 되어있지만 캐시를 사용하고 있는 곳이 남아있다면 gc(가비지 컬렉터)는 캐시를 사용하지 않고 있다 사용하는 곳이 없다면 그때 삭제할것이다.

profile
티스토리로 이사갑니다. https://useyhnha.tistory.com/

0개의 댓글