"์ ๋ด ์ฑ์ ์๊พธ ๋ก๋ฉ๋ง ๋๊น?"
๊ทธ ๋ต์ ๋ฐ์ดํฐ์
์ ํต๊ธฐํ๊ณผ ๋ณด๊ด๊ธฐํ์ ์์ต๋๋ค.
๐ค ๋งค๋ฒ ์๋ก๊ณ ์นจ ๋๋ ํ๋ฉด, ์ง๊ฒน์ง ์์ผ์ ๊ฐ์?
์น ์ฌ์ดํธ๋ ์ฑ์ ์ด์ฉํ๋ค ๋ณด๋ฉด, ํ์ด์ง๋ฅผ ์ด๋ํ๋ค๊ฐ ๋ค์ ๋์์์ ๋
๋๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋๋ฐ๋ '๋ก๋ฉ ์ค...' ํ์๊ฐ ๋จ๋ ๊ฒฝํ์
ํด๋ณด์
จ์ ๊ฒ๋๋ค.
์ฌ์ฉ์ ์
์ฅ์์๋ "์๊น ๋ถ๋ฌ์จ ๊ฑด๋ฐ ์ ๋ ๊ธฐ๋ค๋ ค์ผ ํ์ง?"๋ผ๋ ๋ต๋ตํจ์ด
์๊ธฐ๊ธฐ ๋ง๋ จ์
๋๋ค.
๊ฐ๋ฐ์ ์
์ฅ์์๋ ์๋ฒ์ ๋ถํ์ํ ์์ฒญ์ ๊ณ์ ๋ณด๋ด๋ ๊ฒ์ ๋ฆฌ์์ค ๋ญ๋น์ด์
์ฑ๋ฅ ์ ํ์ ์ฃผ๋ฒ์ด ๋ฉ๋๋ค.
๐ก ์ฌ๊ธฐ์ ๋ฑ์ฅํ๋ ๊ตฌ์ธ์ฃผ, React Query!
React Query๋ ์๋ฒ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
ํ์ง๋ง ๋ง์ ๋ถ๋ค์ด ๊ฐ์ฅ ํท๊ฐ๋ ค ํ๋ ๋ ๊ฐ์ง ๊ฐ๋
์ด ๋ฐ๋ก
Stale Time(์ํ ์๊ฐ)๊ณผ
Cache Time(์บ์ ์๊ฐ)์
๋๋ค.
์ด ๋ ๊ฐ์ง๋ง ์ ๋๋ก ์ดํดํด๋ ์ฑ์ ์๋๋ฅผ ๋น์ฝ์ ์ผ๋ก ํฅ์์ํฌ ์
์์ต๋๋ค.
์ค๋์ ๋ณต์กํ ์ฝ๋๊ฐ ์๋, ์ผ์์ํ์ ์ฌ์ด ๋น์ ๋ฅผ ํตํด ์ด ๋ ๊ฐ๋
์
์๋ฒฝํ๊ฒ ์ ๋ฆฌํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๐ Stale Time: ๋ฐ์ดํฐ์ '์ ์ ๋' ์ ํต๊ธฐํ
๋จผ์ Stale Time์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
'Stale'์ ์์ด๋ก '์ ์ ํ์ง ์์', '์ค๋๋'์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ฆ, ๋ฐ์ดํฐ๊ฐ
์ผ๋ง๋ ์ค๋ซ๋์ ์ ์ ํ ์ํ(Fresh)๋ก ๊ฐ์ฃผ๋ ๊ฒ์ธ๊ฐ๋ฅผ
์ค์ ํ๋ ์๊ฐ์
๋๋ค.
๐ ๋งํธ ์ฅ๋ณด๊ธฐ ๋น์
-
1. Fresh ์ํ: ๊ฐ ๊ตฌ์ด ๋นต์ ์์ต๋๋ค. 1๋ถ ๋ค์ ๋๊ฐ "๋นต
์ค๊น?"๋ผ๊ณ ํ๋ฉด, ๊ตณ์ด ๋นต์ง์ ๋ค์ ๊ฐ ํ์๊ฐ ์์ต๋๋ค. ๋ฐฉ๊ธ ์ฐ ๋นต์ด
์ฌ์ ํ ๋ฐ๋ปํ๊ณ ์ ์ ํ๋๊น์.
๐ ์๋ฒ ์์ฒญ ์์ด ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค. -
2. Stale ์ํ: ๋นต์ ์ฐ ์ง 3์ผ์ด ์ง๋ฌ์ต๋๋ค. "๋นต
์ค๊น?"๋ผ๊ณ ํ๋ฉด ๊ณ ๋ฏผ์ด ๋ฉ๋๋ค. ๊ณฐํก์ด๊ฐ ํ์ ์๋ ์์ผ๋ ๋นต์ง์ ๊ฐ์ ์
๋นต์ ์ฌ์ค๋ ๊ฒ ์์ ํฉ๋๋ค.
๐ ๋ฐ์ดํฐ๊ฐ ์ํ๋ค๊ณ ํ๋จํ๊ณ , ์๋ฒ์ ๋ค์ ์์ฒญ(Refetch)์ ๋ณด๋ ๋๋ค.
React Query์์
staleTime์ ๊ธฐ๋ณธ๊ฐ์
0์ด์
๋๋ค.์ฆ, ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์๋ง์ "์ด๊ฑด ์ํ ๋ฐ์ดํฐ์ผ!"๋ผ๊ณ ํ๋จํ๊ณ , ๋ค์ ๋ฒ์ ํ์ํ ๋ ๋ฐ๋ก ๋ค์ ์์ฒญ์ ๋ณด๋ ๋๋ค.
๋ฐ๋ผ์, ์์ฃผ ๋ณํ์ง ์๋ ๋ฐ์ดํฐ๋ผ๋ฉด ์ด ์๊ฐ์ ์ ์ ํ ๋๋ ค์ฃผ๋ ๊ฒ์ด ์ฑ๋ฅ ์ต์ ํ์ ์ฒซ๊ฑธ์์ ๋๋ค.
๐️ Cache Time: ์ฐ๋ ๊ธฐํต ๋น์ฐ๋ ์๊ฐ
๋ค์์ Cache Time(gcTime)์
๋๋ค.
์ด๊ฒ์ ๋ฐ์ดํฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ง๋ ์ค๋ซ๋์ ๋จ์์์์ง๋ฅผ
๊ฒฐ์ ํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ํ๋ฉด์ ๋ฒ์ด๋์ ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ ์ด์ ์ฐ์ด์ง ์๊ฒ ๋์์
๋(Inactive ์ํ), ์ด ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ง์ธ์ง ์๋๋ฉด ํน์ ๋ชจ๋ฅด๋ ์ ๊น
๋๋์ง๋ฅผ ์ ํ๋ ๊ฒ์
๋๋ค.
๐ ์ง ์ฒญ์ ๋น์
์ฌ๋ฌ๋ถ์ด ๋ฐฉ๊ธ ๋จน์ ๊ณผ์ ๋ด์ง๋ฅผ ์๊ฐํด๋ณด์ธ์.
- ๋ค ๋จน์ ๊ณผ์ ๋ด์ง(Inactive Data)๋ฅผ ์ฑ ์ ์์ ์ฌ๋ ค๋ก๋๋ค.
- Cache Time ๋ด: 5๋ถ ๋ค์ ๋ค์ ๊ณผ์ ๋ด์ง์ ์ฑ๋ถํ๋ฅผ ๋ณด๊ณ ์ถ๋ค๋ฉด, ์ฐ๋ ๊ธฐํต์ ๋ค์ง ํ์ ์์ด ์ฑ ์ ์์ ๋ด์ง๋ฅผ ๋ค์ ๋ณด๋ฉด ๋ฉ๋๋ค.
- Cache Time ๊ฒฝ๊ณผ: 30๋ถ์ด ์ง๋ ์ฒญ์๋ฅผ ํ๋ฉด์ ๋ด์ง๋ฅผ ์ฐ๋ ๊ธฐํต์ ๋ฒ๋ ธ์ต๋๋ค(๋ฉ๋ชจ๋ฆฌ ํด์ ). ์ด์ ์ฑ๋ถํ๋ฅผ ๋ณด๋ ค๋ฉด ๋งํธ์ ๊ฐ์ ๊ณผ์๋ฅผ ๋ค์ ์ฌ์์ผ ํฉ๋๋ค.
๐ ํต์ฌ ์์ฝ
๋ฐ์ดํฐ๊ฐ Stale(์ํ) ์ํ๋ผ๋
Cache Time(๋ณด๊ด ๊ธฐ๊ฐ)์ด ๋จ์์๋ค๋ฉด, ์ผ๋จ ์บ์๋
๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ๋ค์์ ๋ชฐ๋ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ์ฌ์ฉ์๊ฐ "๋ก๋ฉ ์์ด ๋น ๋ฅด๋ค"๊ณ ๋๋ผ๊ฒ ๋ง๋๋
๋น๊ฒฐ์
๋๋ค.
๐ ํ๋์ ๋น๊ตํ๋ ์ฐจ์ด์
๋ ๊ฐ๋
์ด ์์ง ํท๊ฐ๋ฆฌ์ ๋ค๋ฉด ์๋ ํ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
| ๊ตฌ๋ถ | Stale Time | Cache Time (gcTime) |
|---|---|---|
| ํต์ฌ ์ง๋ฌธ | "์ด ๋ฐ์ดํฐ, ๋ค์ ๋ฐ์์์ผ ํด?" | "์ด ๋ฐ์ดํฐ, ๋ฉ๋ชจ๋ฆฌ์์ ์ง์์ผ ํด?" |
| ๊ธฐ๋ณธ๊ฐ | 0์ด (์ฆ์ ์ํจ) | 5๋ถ |
| ๋์ ์์ | ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์กฐํํ ๋ (Refetch ์ฌ๋ถ ๊ฒฐ์ ) | ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ๋์ง ์์ ๋ (Inactive ์ํ ์ง์ ์) |
๐ ๋ง์น๋ฉฐ: ์ต์ ์ ์ค์ ๊ฐ ์ฐพ๊ธฐ
React Query๋ ๋ณต์กํ ์๋ฒ ์ํ ๊ด๋ฆฌ๋ฅผ ๋๋ผ์ธ ์ ๋๋ก ๋จ์ํ๊ฒ
๋ง๋ค์ด์ค๋๋ค.
ํ์ง๋ง ๊ธฐ๋ณธ๊ฐ(staleTime: 0)์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด, React Query์ ์ง์ ํ ์ฑ๋ฅ์
์ด์ ์ ๋๋ฆฌ๊ธฐ ์ด๋ ต์ต๋๋ค.
✅ ์ค์ ์ ์ฉ ๊ฐ์ด๋
-
์์ฃผ ๋ณํ๋ ๋ฐ์ดํฐ(์: ์ฃผ์ ๊ฐ๊ฒฉ, ์ค์๊ฐ ์ฑํ
):
staleTime์ ์งง๊ฒ ์ ์งํ์ธ์. -
๊ฑฐ์ ๋ณํ์ง ์๋ ๋ฐ์ดํฐ(์: ๋ง์ดํ์ด์ง ํ๋กํ, ๊ณต์ง์ฌํญ):
staleTime์ Infinity๋ 5๋ถ ์ด์์ผ๋ก ๊ธธ๊ฒ ์ค์ ํ์ธ์. ๋ถํ์ํ ๋คํธ์ํฌ ์์ฒญ์ ํ๊ธฐ์ ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค. - ์บ์ ํ์: ๊ธฐ๋ณธ๊ฐ 5๋ถ์ด๋ฉด ์ถฉ๋ถํ์ง๋ง, ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ํ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ์ํฉ์ ๋ฐ๋ผ ์กฐ์ ์ด ํ์ํฉ๋๋ค.
์ด์ ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ ์ฝ๋๋ฅผ ์ด์ด๋ณด์ธ์.
๋ฌด์ฌ์ฝ ์ง๋์ณค๋ useQuery ์ต์
์ ์์ ๋ณํ๋ฅผ ์ฃผ๋ ๊ฒ๋ง์ผ๋ก๋,
์ฌ์ฉ์์๊ฒ ํจ์ฌ ์พ์ ํ ๊ฒฝํ์ ์ ๋ฌผํ ์ ์์ต๋๋ค.
๋ค์์๋ ๋ ํฅ๋ฏธ๋ก์ด ์ต์ ํ ํ์ผ๋ก ์ฐพ์์ค๊ฒ ์ต๋๋ค!


.png)
.png)
๋๊ธ ์ฐ๊ธฐ