stale ๋ํ์ฌ
๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์๋ ๋ฐ์ดํฐ๋ฅผ staleํ ์ํ๋ก ์ฌ๊น๋๋ค. stale์ด๋ ์ต์ ํ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ผ๋ ์๋ฏธ๋ก
staleํ ์ํ๊ฐ ๋๋ฉด ๋ค์์ ๊ฒฝ์ฐ์ refetch ๋ฉ๋๋ค.
- ์๋ก์ด query ์ธ์คํด์ค๊ฐ ๋ง์ดํธ๋ ๋( useQuery๊ฐ ์ฒ์ ํธ์ถ๋ ๋ )
- ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ์ดํํ๋ค๊ฐ ๋ค์ ํฌ์ปค์คํ ๋
- ๋คํธ์ํฌ๊ฐ ๋ค์ ์ฐ๊ฒฐ๋ ๋
- ํน๋ณํ ์ค์ ํ refetch interval์ ์ํด์ (refetchInterval)
refetchOnWindowFocus ์ต์
๋ฑ์ผ๋ก ๊ธฐ๋ณธ refetch ์ค์ ์ ๋ง์ ์ ์๊ณ
staleTime ์ต์
์ผ๋ก ์ค์ ํ ์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ stale ๋์ง ์๋๋ก ํด refetch๋ฅผ ๋ง์ ์๋ ์์ต๋๋ค.
query์ ๋ณ๋ค๋ฅธ action์ด ์์ผ๋ฉด inactive ์ํ๋ก ์บ์์ ๋จ์ ์๋ค๊ฐ 5๋ถ ๋ค์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง์ง๋ง,
cacheTime ์ต์
์ ์ค์ ํด์ ์ด ์๊ฐ์ ์กฐ์ ํ ์ ์์ต๋๋ค. ( ์บ์ฑ์ ์ํ ํฌ์ธํธ! )
staleTime & cacheTime
๋จผ์ ๋์ ๊ฐ๋ ๊ณผ ์ฐจ์ด๋ถํฐ ์์๋ณด๊ฒ ์ต๋๋ค.
staleTime
- ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ ๋ฆฌ์ํธ ์ฟผ๋ฆฌ์ ์๋ฃ๊ตฌ์กฐ ๋ด์ฉ ์ค ์บ์์ ์ ์ฅ์ด ๋๋๋ฐ,
- ์ด๋ ์ด ์บ์๋ฐ์ดํฐ์ "์ ์ ํ ์ํ" ๊ฐ ์ธ์ ๊น์ง ๋ ์ง๋ฅผ ๋งํด์ฃผ๋ ์ต์ ์ ๋๋ค.
- default๋ 0์ผ๋ก, ๋ฐ์์ค๋ ์ฆ์ staleํ๋ค๊ณ ํ๋จํ๋ฉฐ ์บ์ฑ ๋ฐ์ดํฐ์ ๋ฌด๊ดํ๊ฒ ๊ณ์ํด์ feching์ ์งํ ํฉ๋๋ค.
์ ์ ํ๋ค ํจ์,
์๋ฒ์์ ์กฐํํ ๋ฐ์ดํฐ๋ ๊ทธ๋ ๋น์์ ๋ฐ์ดํฐ snapshot์ด๊ณ , ์ธ๋ถ ์์ฒญ์ผ๋ก ์๋ฒ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ์ด ๋์๋ค๋ฉด
๋ด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ๋ ์ด๋ฏธ ์ค๋๋ ๋ก์ ๋ฐ์ดํฐ๊ฐ ๋์์ผ๋ฏ๋ก staleํ๋ค๊ณ ๋งํ๋ ๊ฒ ์
๋๋ค.
cacheTime
- ์บ์ ๊ตฌ์กฐ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์กด์ฌํ๊ฒ ๋ฉ๋๋ค.
- ์ด ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋์ด ์๋ ์บ์ ๋ฐ์ดํฐ๊ฐ ์ธ์ ๊น์ง ์ ์ง๋ ์ง๋ฅผ ๋งํด์ฃผ๋ ์ต์ ์ ๋๋ค.
- ์ฆ, ์บ์ฑ๋ ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ณ์ ์ ์ง๋๋ ๊ฒ์ด ์๋๋ผ ์๊ฐ์ด ์ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง๋๋ค.
์ฌ์ฉ ์ ์ฃผ์ํด์ผ ํ ์
๋ง์ฝ ํด๋น useQuery๋ฅผ ํธ์ถํ ๋น์์ ์ต์
์ผ๋ก staletime์ ๋ฐ๋ก ์ง์ ํด์ฃผ์ง ์์์๋ค๋ฉด,
ํญ์ ์บ์ฑ๋์ด ์๋ ๋ฐ์ดํฐ๋ staleํ๋ค๊ณ ์ฌ๊ธฐ๊ธฐ ๋๋ฌธ์ refetching์ ํ๊ฒ ๋์ด ์๋ฒ์ ๊ณ์์ ์ธ ์์ฒญ์ ํฉ๋๋ค.
- ์ฆ, staleTime ์ ์ง์ ํด์ฃผ์ง ์๊ณ ์ฌ์ฉํ๋ฉด ์บ์ฑ ๊ธฐ๋ฅ์ ์ ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
- ๋ง์ฝ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์์ฃผ์์ฃผ ๋ณํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด๋ผ๋ฉด ์ง์ ํ์ง ์๋ ํธ์ด ์ข๊ณ
- ํด๋น ๋ธ๋ผ์ฐ์ ์ ํํ๋๋ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ค์ด ์ ์ ์ด๋ผ๋ฉด staletime์ ์ง์ ํด์ฃผ๊ณ ์์ฒญํ๋ ๊ฒ์ด ์๋ฒ์ ๋ถ๋ด์ ์ค์ผ ์ ์์ต๋๋ค.
Caching ์ ์ฉ
๋ ๊ฐ์ options์ ๋ฃ์ ์ ์์ต๋๋ค.
const { data } = useQuery('users', getUsers, { // options
staleTime: 5000,
cacheTime: Infinity,
});
staleTime์ผ๋ก ์ค์ ํ ์๊ฐ๋งํผ api ์์ฒญํ ๋ฐ์ดํฐ์ ์ ์ ๋๊ฐ ์ ์ง๋๊ณ
์ด ์๊ฐ์ด ์ง๋๋ฉด freshํ ์ํ์์ staleํ ์ํ๊ฐ ๋๊ธฐ ๋๋ฌธ์
๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํ์๋ก ํ ๋ api ์์ฒญ์ ๋ค์ ํ ์ ๋ฐ์ ์์ต๋๋ค.
์์ฝ
- ๋ฆฌ์กํธ ์ฟผ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์บ์๋ ๋ฐ์ดํฐ๋ฅผ staleํ ์ํ๋ก ์ฌ๊น๋๋ค. stale์ด๋ ์ต์ ํ๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ผ๋ ์๋ฏธ
- staleํ ์ํ๊ฐ ๋๋ฉด ๋ค์์ ๊ฒฝ์ฐ์ refetch ๋ฉ๋๋ค.
- staleTime์ ๊ธธ๊ฒ ์คฌ๋คํด๋ ์ ์ฅ๋๋ ์๊ฐ์ธ cacheTime์ด ์งง๋ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ ๋ค์ ์์ฒญ์ ํด์ผ ํฉ๋๋ค.
- staleTime์ ๊ธฐ๋ณธ๊ฐ์ 0์ด๊ณ cacheTime์ 5๋ถ. ์๋ฌด๋ฐ option์ ์ฃผ์ง ์์ผ๋ฉด ์บ์ฑ์ด ๋์ง ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ ์บ์ฑ๋์ง๋ง ์ ์ ํ ๋ฐ์ดํฐ๊ฐ ํ๋๋ ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ ์ ๋๋ค.
์ฐธ๊ณ
'๐ Front-End > React.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React + TS + Style-Components (0) | 2022.11.15 |
---|---|
react-router-dom V6 ๊ณต๋ถ (0) | 2022.11.11 |
React + TypeScript(state) (0) | 2022.10.26 |
React + TypeScript(Optional Props) (0) | 2022.10.26 |
React + TypeScript(interface) (0) | 2022.10.26 |