ํ๋ก์ ํธ ๊ตฌํ์ ์งํํ๋ฉด์ ์๋ก์ด ํ์ด์ง๋ฅผ ๋ง๋ค์๋ค. ์๋ฒ์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ ์ด๋ฏธ ๋ง๋ค์ด์ ธ์๋ ๋ฐ์ดํฐ ํธ์ถ ์ฝ๋๋ค์ ๊ทธ๋๋ก ์ฌํ์ฉํด์ ์งํ์ ํ๋๋ฐ ๊ฐ๋ฐ๋ชจ๋์์๋ ๊ด์ฐฎ์์ง๋ง ๋น๋๋ง ํ๋ฉด ๊ณ์ํด์ ์ค๋ฅ๊ฐ ๋ฌ๋ค.
์ ํํ๋ ์ ์ ๋ ๋๋งํ๋ ํ์ด์ง์์ ๊ณ์ ์ค๋ฅ๊ฐ ๋๋ ์ํฉ
๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ํธ์ถํ๊ฒ ์๋ฒAPI๋ฅผ ๋ฐ๋ก ๋ง๋ ๊ฒ ์๋๋ผ nextjs๊ฐ ์ง์ํ๋ api route๋ฅผ ์ด์ฉํด์ severless ํ ํจ์๋ก ๊ตฌํํ๋ค. ์ฐธ๊ณ ๋ก API ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด Next.js ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ธ๋ถ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ์ ์๋ค.
์ด ๋ถ๋ถ์ ์ดํดํ๊ธฐ ์ํด์๋ nextjs์ ์๋ฒ ๋ ๋๋ง์ ๋ํด์ ์ ํ์๊ฐ ์๋ค.
nextjs ์๋ฒ ๋ ๋๋ง์๋ ์ด 3๊ฐ์ง๊ฐ ์๋๋ฐ,
์ฒซ๋ฒ์งธ Static (์ ์ ),
๋๋ฒ์งธ dynamic(๋์ ),
์ธ๋ฒ์งธ Streaming ์ด๋ค.
์ฌ๊ธฐ์ ์ค์ํ๊ฑด ์ ์ ๋ ๋๋ง๊ณผ ๋์ ๋ ๋๋ง์ด๋ค.
์ ์ ๋ ๋๋ง์ด ๊ธฐ๋ณธ๊ฐ์ธ๋ฐ, ๋ผ์ฐํธ๊ฐ ๋น๋ ์๊ฐ์ ๋ ๋๋ง๋๊ฑฐ๋ ๋ฐ์ดํฐ ์ฌ๊ฒ์ฆ ํ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ ๋๋ง๋๋ค. ๊ฒฐ๊ณผ๋ ์บ์๋์ด ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์ ํธ์ํ ์ ์๋ค. ์ด ์ต์ ํ๋ฅผ ํตํด ๋ ๋๋ง ์์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์ ์๋ฒ ์์ฒญ ๊ฐ์ ๊ณต์ ํ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ์๊ณ ๋น๋ ์๊ฐ์ ์ ์ ์๋ ๊ฒฝ์ฐ ์ ์ฉํ๋ฉฐ ์ด๋ ์ ์ ๋ธ๋ก๊ทธ ๊ธ์ด๋ ์ ํ ํ์ด์ง์ ๊ฐ์ ๊ฒฝ์ฐ์ด๋ค.
๋์ ๋ ๋๋ง์์๋ ๋ผ์ฐํธ๊ฐ ๊ฐ ์ฌ์ฉ์์๊ฒ ์์ฒญ ์๊ฐ์ ๋ ๋๋ง๋๋ค. ๋ผ์ฐํธ์ ์ฌ์ฉ์์๊ฒ ๋ง์ถคํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋๋ ์์ฒญ ์๊ฐ์๋ง ์ ์ ์๋ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ฉฐ ์ด๋ ์ฟ ํค๋ URL์ ๊ฒ์ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ๊ฒฝ์ฐ์ด๋ค. ๋์ ํจ์๋ ์บ์๋์ง ์์ ๋ฐ์ดํฐ ์์ฒญ์ด ๋ฐ๊ฒฌ๋๋ฉด Next.js๋ ๋ผ์ฐํธ ์ ์ฒด๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํ๋๋ก ์ ํํ๋ค.
์คํธ๋ฆฌ๋ฐ์ ๋ฐ์ดํฐ๊ฐ ์กฐ๊ฐ์กฐ๊ฐ ์ ์ก๋๋ฉด์ ๋์์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ ๋๋ง๋๋ ๋ฐฉ์์ผ๋ก ์ด๋ ์ ์ฒด ํ์ด์ง๊ฐ ์์ ํ ๋ ๋๋ง๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ ์ผ๋ถ๋ถ์ด ํด๋ผ์ด์ธํธ๋ก ์ ์ก๋๊ณ ๋ ๋๋ง๋ ์ ์์์ ์๋ฏธํ๋ค. ์ด๊ฒ์ ๋น ๋ฅธ ์ด๊ธฐ ๋ก๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค.
์ค๋ฅ๊ฐ ๋ ์ฌ์ ์ ๋ํด์ ์ฝ๋๋ฅผ ๋ฏ์ด๋ณด๋ฉด ๋ด์ฉ์ด ์ดํด๊ฐ ๋๋ค. ์ฌ๊ธฐ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ฝ์ ๋ณด๋ฉด revalidatePath('/') ๋ฅผ ์ฐ๋๋ฐ ์ด๋ถ๋ถ์ด ํด๋น /URL์ ์๋ ์บ์๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ์์ฑํด์ฃผ๋ ํจ์์ธ๋ฐ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํด์ฃผ๋ ๊ธฐ๋ฅ๋ ์๋ค. ๋ค์ ๋ก๋ํด์ฃผ๋ ๊ธฐ๋ฅ์ด ๋์ ์ธ ๋ ๋๋ง์ ํด๋น. ์ ์ ์ธ ๋ ๋๋ง์ ํ ์ ์๋ ๊ฒ์ธ๋ฐ ๊ธฐ๋ณธ ๊ฐ์ด ์ ์ ์ธ ๋ ๋๋ง์ด ๋๋ค๋ณด๋ ์ค๋ฅ๊ฐ ๊ณ์ ๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ตญ ๋ฌธ์ ์ํฉ์ api route์์ ๋์ ๋ ๋๋ง์ ํด์ผํ๋๋ฐ, ํ์ด์ง์์๋ ๊ธฐ๋ณธ๊ฐ์ธ ์ ์ ๋ ๋๋ง์ ์ง์ํด์ ๋ฌธ์ ๊ฐ ์๊ธด ๊ฒ
์ด ๋ถ๋ถ์ ๊ฐ๊ทน์ ํ์ด ์ค ์ ์๋ ๊ฒ์ด ๋ฐ๋ก Route Segment์ด๋ค.
Route Segment ์ต์ ์ ์ฌ์ฉํ๋ฉด ํ์ด์ง, ๋ ์ด์์ ๋๋ ๋ผ์ฐํธ ํธ๋ค๋ฌ์ ๋์์ ์ง์ ๋ด๋ณด๋ด๋ ๋ณ์๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.
๋ค์ํ ์ต์ ๋ค์ด ์๋๋ฐ ๊ทธ ์ค์์๋ dynamic ์ต์ ์ ์ฐ๋ฉด ๋ ์ด์์ ๋๋ ํ์ด์ง์ ๋์ ๋์์ ์์ ํ ์ ์ ์ด๊ฑฐ๋ ์์ ํ ๋์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ค.
'force-dynamic': ๊ฐ์ ๋์ ๋ ๋๋ง์ผ๋ก ์ค์ ํ์ฌ, ๊ฐ ์ฌ์ฉ์์ ์์ฒญ ์๊ฐ์ ๋ผ์ฐํธ๊ฐ ๋ ๋๋ง๋ฉ๋๋ค.
์ด ์ต์
์ ํ์ด์ง ๋๋ ํ ๋ฆฌ์ getServerSideProps()์ ๋๋ฑํฉ๋๋ค.
'force-dynamic' ์ต์ ์ ๋ผ์ฐํธ๊ฐ ๊ฐ ์ฌ์ฉ์์ ์์ฒญ ์๊ฐ์ ๋์ ์ผ๋ก ๋ ๋๋ง๋์ด์ผ ํ ๋ ์ฌ์ฉ๋๋ ๊ฒ์ผ๋ก ์ด๋ ๋ผ์ฐํธ๊ฐ ๊ฐ์ธํ๋ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ๊ฑฐ๋ ์์ฒญ ์๊ฐ์๋ง ์ ์ ์๋ ์ ๋ณด๋ฅผ ํฌํจํ ๋ ์ ์ฉํ๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์์๊ฒ ํน์ ์ฟ ํค์ ๋ฐ๋ผ ๋ค๋ฅธ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํด์ผ ํ๊ฑฐ๋ URL์ ๊ฒ์ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ํ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์ 'force-dynamic'๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ getServerSideProps()์ ๋น์ทํ ๋์์ ์ํํ๋ฉฐ, ๋ผ์ฐํธ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ ์ฌ์ฉ์์ ๋ง๊ฒ ๋ ๋๋งํ๋ค.
์ฆ, ์ ์ ํ์ด์ง ์์ฑ ๊ณผ์ ์์ ๋ฐ์ํ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋ ๋๋งํ์ฌ ๋ฌธ์ ๋ฅผ ์ฐํํ ๊ฒ. ์ด๋ ํ์ด์ง๊ฐ ์ ์ ์ผ๋ก ์์ฑ๋๋ ๊ณผ์ ์์ ํ์ํ ๋ฐ์ดํฐ๋ ๋์ ์ธ ์์๊ฐ ์์ด์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
force-dynamic ์ต์ ์ ์ถ๊ฐํด์ ๋์ ๋ ๋๋ง์ผ๋ก ์ฐํํด์ ํด๊ฒฐํ ๊ฒ์ด๋ผ๊ณ ์๊ฐ๋๋ค
๐๐ป ๊ณต์๋ฌธ์ ํ์ด์ง๋ก ์ด๋ํ๊ธฐ
'๊ฐ๋ฐ > Next.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
nextjs shadcn/ui ์์ ๋ฏธ๋์ด์ฟผ๋ฆฌ ์์ ํ๊ธฐ (0) | 2024.06.10 |
---|---|
Nextjs14 + nextui๋ฅผ ์ฌ์ฉํด์ progress bar ๋ง๋ค๊ธฐ (1) | 2024.06.05 |
vercel๋ก Nextjs ๋ฐฐํฌํ๊ธฐ (0) | 2024.01.05 |
Next.js14์์ useRouter ์ฌ์ฉํ๊ธฐ (1) | 2024.01.03 |
NEXT.js14 API Routes ์ฌ์ฉํ๊ธฐ (with. MONGODB) (1) | 2024.01.03 |