πŸ”„ staleTime (데이터 신선도)

staleTime은 λ°μ΄ν„°μ˜ μ΅œμ‹ μ„± 보μž₯을 λͺ©ν‘œλ‘œ ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€.

핡심 원칙

핡심은 β€œμ„œλ²„ λ°μ΄ν„°λŠ” μ–Έμ œλ“  λ°”λ€” 수 μžˆλ‹€.” λΌλŠ” μ›μΉ™μ—μ„œ μΆœλ°œν•©λ‹ˆλ‹€. 아무리 방금 κ°€μ Έμ˜¨ 데이터라도, μ‹œκ°„μ΄ μ§€λ‚˜λ©΄ μ΅œμ‹ μ΄ 아닐 수 μžˆλ‹€λŠ” κ΄€μ μž…λ‹ˆλ‹€.

λ™μž‘ 방식

데이터가 화면에 ν‘œμ‹œλ˜κ³  μžˆλ”λΌλ„, μ„€μ •λœ staleTime (기본값은 0초)이 μ§€λ‚˜λ©΄ ν•΄λ‹Ή λ°μ΄ν„°λŠ” 였래된 데이터 (stale) 둜 κ°„μ£Όλ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ 였래된 λ°μ΄ν„°λ‘œ κ°„μ£Όλ˜λ©΄, μ‚¬μš©μžκ°€ 창을 λ‹€μ‹œ ν¬μ»€μŠ€ν•˜κ±°λ‚˜, 데이터λ₯Ό μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ λ‹€μ‹œ 마운트될 λ•Œ μžλ™μœΌλ‘œ 데이터λ₯Ό μƒˆλ‘œκ³ μΉ¨ (refetch) ν•˜μ—¬ 항상 μ΅œμ‹  정보λ₯Ό 보여주렀고 μ‹œλ„ν•©λ‹ˆλ‹€.

μ‹€μ‚¬μš© μ˜ˆμ‹œ

SNS ν”Όλ“œλ‚˜ 주식 μ°¨νŠΈμ™€ 같이 μ‹€μ‹œκ°„μ„±μ΄ μ€‘μš”ν•œ 데이터에 μœ μš©ν•©λ‹ˆλ‹€. λ‹€λ₯Έ 탭을 보닀가 μ„œλΉ„μŠ€ νƒ­μœΌλ‘œ λŒμ•„μ™”μ„ λ•Œ, μ‚¬μš©μžκ°€ λ³„λ„μ˜ μƒˆλ‘œκ³ μΉ¨ λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•Šμ•„λ„ μ΅œμ‹  κ²Œμ‹œλ¬Όμ΄λ‚˜ 주식 가격이 μžλ™μœΌλ‘œ 화면에 λ°˜μ˜λ˜λ„λ‘ ν•©λ‹ˆλ‹€.


πŸ—‘οΈ gcTime (μΊμ‹œ 보관 μ‹œκ°„)

gcTime은 λΉ λ₯΄κ³  λΆ€λ“œλŸ¬μš΄ ν™”λ©΄ μ „ν™˜μ„ λͺ©ν‘œλ‘œ ν•˜λŠ” μ„€μ •μž…λ‹ˆλ‹€. μ΄λŠ” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜(Garbage Collection) μ‹œκ°„μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

핡심 원칙

핡심은 β€œμ‚¬μš©μžλŠ” 방금 λ³Έ νŽ˜μ΄μ§€λ‘œ λ‹€μ‹œ λŒμ•„μ˜¬ 수 μžˆλ‹€.” λΌλŠ” μ‚¬μš©μž κ²½ν—˜(UX) 기반의 μ›μΉ™μž…λ‹ˆλ‹€.

λ™μž‘ 방식

데이터λ₯Ό μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈκ°€ ν™”λ©΄μ—μ„œ μ‚¬λΌμ§€κ±°λ‚˜ (μ–Έλ§ˆμš΄νŠΈ), 더 이상 ν•΄λ‹Ή 데이터λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ²Œ λ˜μ–΄ μ•ˆ μ“°λŠ” 데이터가 λ˜μ—ˆμ„ 경우, μ„€μ •λœ gcTime (기본값은 5λΆ„) λ™μ•ˆμ€ μΊμ‹œμ—μ„œ μ¦‰μ‹œ μ‚­μ œν•˜μ§€ μ•Šκ³  μž„μ‹œλ‘œ λ³΄κ΄€ν•©λ‹ˆλ‹€. 이 μ‹œκ°„ λ™μ•ˆ μ‚¬μš©μžκ°€ λ‹€μ‹œ ν•΄λ‹Ή 데이터λ₯Ό μš”μ²­ν•˜λ©΄, λ„€νŠΈμ›Œν¬ λ‘œλ”© 없이 μΊμ‹œλœ 데이터λ₯Ό μ¦‰μ‹œ 보여쀄 수 μžˆμŠ΅λ‹ˆλ‹€. gcTime이 μ§€λ‚˜λ©΄ ν•΄λ‹Ή μΊμ‹œλŠ” κ°€λΉ„μ§€ μ»¬λ ‰μ…˜μ˜ λŒ€μƒμ΄ λ˜μ–΄ λ©”λͺ¨λ¦¬μ—μ„œ μ™„μ „νžˆ μ œκ±°λ©λ‹ˆλ‹€.

μ‹€μ‚¬μš© μ˜ˆμ‹œ

μƒν’ˆ λͺ©λ‘ νŽ˜μ΄μ§€λ₯Ό 예둜 λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ©λ‘(A)μ—μ„œ νŠΉμ • μƒν’ˆμ˜ 상세 νŽ˜μ΄μ§€(B)둜 μ΄λ™ν–ˆλ‹€κ°€ β€˜λ’€λ‘œ 가기’λ₯Ό 톡해 λ‹€μ‹œ λͺ©λ‘(A)으둜 λŒμ•„μ™”μ„ λ•Œ, gcTime 덕뢄에 λͺ©λ‘(A)이 λ‘œλ”© ν™”λ©΄ 없이 μ¦‰μ‹œ 화면에 뜨게 λ©λ‹ˆλ‹€. μ΄λ•Œ 화면에 λ³΄μ΄λŠ” λ°μ΄ν„°λŠ” μΊμ‹œλœ λ°μ΄ν„°μ΄μ§€λ§Œ, λ°°κ²½μ—μ„œλŠ” μ΅œμ‹  μ •λ³΄λ‘œ μ—…λ°μ΄νŠΈν•˜λŠ” μž‘μ—…μ΄ λ™μ‹œμ— μ§„ν–‰λ˜μ–΄ μ‚¬μš©μžμ—κ²Œ λΉ λ₯Έ 응닡성과 μ΅œμ‹  정보λ₯Ό λͺ¨λ‘ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


μ°Έκ³ 

Practical React Query | TkDodo’s blog