[TanStack Query] 'stale time' vs 'gc time' ๐Ÿค”

namuยท2025๋…„ 1์›” 16์ผ

TanStack Query๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๋ฅผ ์–ธ์ œ๊นŒ์ง€ ์œ ์ง€ํ•˜๊ณ , ์–ธ์ œ ํ๊ธฐํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ”๋กœ stale time๊ณผ gc time(Garbage Collection Time)์ž…๋‹ˆ๋‹ค.


๐ŸŸข stale time์ด๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฅผ fetchedํ•œ ์ดํ›„, ์–ผ๋งˆ ๋™์•ˆ fresh(์‹ ์„ )ํ•œ ์ƒํƒœ๋กœ ์œ ์ง€ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • staleTime: 0์ด๋ผ๋ฉด, ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค์ž๋งˆ์ž ๋ฐ”๋กœ stale ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ฆ‰, staleTime์ด 0์ด๋ฉด ๋งค๋ฒˆ refetch๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค!

useQuery({
  queryKey: ['todos'],
  queryFn: fetchTodos,
  staleTime: 0, // ๋ฐ์ดํ„ฐ๊ฐ€ freshํ•œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋Š” ์‹œ๊ฐ„ (0์ดˆ)
});


๐Ÿ—‘๏ธ gc time(Garbage Collection Time)์ด๋ž€?

  • ํ•ด๋‹น ์ฟผ๋ฆฌ๊ฐ€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ, ์ฆ‰ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ธ๋งˆ์šดํŠธ๋œ ์ดํ›„
    ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์–ผ๋งˆ๋‚˜ ์œ ์ง€ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
useQuery({
  queryKey: ['todos'],
  queryFn: fetchTodos,
  gcTime: 5 * 60 * 1000, // 5๋ถ„ ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€
});

๐Ÿ“Œ gcTime์ด ์ง€๋‚˜๋ฉด ์บ์‹œ๊ฐ€ ์‚ญ์ œ๋˜๋ฏ€๋กœ, ์ดํ›„ ๋‹ค์‹œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค!


๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ

๐Ÿ“Œ ๋งค์ผ๋ฉ”์ผ ๋ธ”๋กœ๊ทธ
๐Ÿ“Œ TanStack Query ๊ณต์‹ ๋ฌธ์„œ

profile
web dev

0๊ฐœ์˜ ๋Œ“๊ธ€