Next.js๋ app router
๊ธฐ๋ฐ ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก fetch์ page rendering์ SSR(Server Side Rendering) ๋๋ SSG(Static Site Generation) ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฌ๊ธฐ์ ์บ์ ์ ๋ต์ ์ด๋ป๊ฒ ์ฐ๋๋์ ๋ฐ๋ผ ํ์ด์ง์ ์ฑ๋ฅ, ์ฌ์ฉ์ ๊ฒฝํ, SEO๊ฐ ์ข์ฐ๋ฉ๋๋ค.
๋์ผํ fetch ์์ฒญ์ ํ ๋ฒ๋ง ์ฒ๋ฆฌํ๊ณ , ์ดํ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํฉ๋๋ค.
const A = async () => await fetch('/api/workspace');
const B = async () => await fetch('/api/workspace');
// ๊ฐ์ ์์ฒญ, ํ ๋ฒ๋ง ์์ฒญ๋จ
await fetch('/api/data', {
next: { cache: 'no-store' }
});
next build
์์ ์ fetch๋ฅผ ์คํํ๊ณ , ์ ์ ์ผ๋ก ์บ์ฑํฉ๋๋ค.
auto
์บ์ ์ ์ฑ
์ด์ง๋ง, ์ ์ fetch๋ force-cache
์ฒ๋ผ ๋์const TodoListPage = async () => {
const todos = await getTodoList();
return (
<ul>
{todos.map((todo, i) => <li key={i}>{todo}</li>)}
</ul>
);
}
const CreateTodoPage = () => {
const onSaveTodo = async () => {
await saveTodo();
router.push('/todo-list');
}
return <button onClick={onSaveTodo}>์์ฑ</button>;
}
no-store
์ฌ์ฉ (ํญ์ ์ต์ ๋ฐ์ดํฐ)revalidateTag
๋ก ํน์ ์บ์ ๋ฌดํจํawait fetch('/api/todos', {
next: { tags: ['todos'] }
});
revalidateTag('todos');
์ ์ ๊ฐ ๋ฐฉ๋ฌธํ ํ์ด์ง๋ฅผ ์บ์ฑํ์ฌ ๋ค์ ์์ฒญ ์ ๋น ๋ฅด๊ฒ ์๋ตํฉ๋๋ค.
๋น๊ต ํญ๋ชฉ | Build-time Cache | Page Cache |
---|---|---|
์์ฑ ์์ | ๋น๋ ์ | ์์ฒญ ์ |
๊ฐฑ์ ์์ | ISR ๋๋ ์ฌ๋ฐฐํฌ | ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฌดํจํ ๊ฐ๋ฅ |
์ฌ์ฉ ์ฌ๋ก | ๋ง์ผํ ํ์ด์ง | ๋ก๊ทธ์ธ ํ ๋์๋ณด๋ |
์ ์ ๊ฐ ์์ง ํด๋ฆญํ์ง ์์ ๋งํฌ์ ๋ํด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฏธ๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
<Link>
๋ ์ ์ ๊ฒฝ๋ก์ ๋ํด ์๋ prefetch<Link href="/about">About</Link>
<Link href="/about" prefetch={false}>About</Link>
const Parent = () => <Child />
const Child = async () => {
const data = await fetchData();
}
const Page = () => <ModalButton />
const Server = async () => {
const data = await fetchData();
return <Client data={data} />
}
๋จ์ด | ๋ป | ๋ฐ์ |
---|---|---|
Cache | ์ ์ฅ๋ ๋ฐ์ดํฐ | [kรฆส] |
Prefetch | ์ฌ์ ๋ก๋ฉ | [priหหfetส] |
Revalidate | ์ฌ๊ฒ์ฆํ๋ค | [หriหหvรฆlษชdeษชt] |
Tag | ํ๊ทธ (๋ถ๋ฅ ๋จ์) | [tรฆษก] |
Observer | ๊ด์ฐฐ์ | [ษbหzษหrvษr] |
๋งํฌ ๋๋ผํผ๋ ๋งํฌ๋ฅผ ์ ์ฅํ๊ณ ,
์ ๋ฆฌํ๊ณ ,
๋ค์ ๊บผ๋ด๋ณด๊ฒ ๋ง๋ค์ด์ฃผ๋ ์๋น์ค์ ๋๋ค.
๐ ๋งํฌ ๋๋ผํผ ๋ฒ ํ ์ฒดํํ๋ฌ ๊ฐ๊ธฐ
๐ ํฌ๋กฌ ์น์คํ ์ด์์ ์ค์นํ๊ธฐ