ํค๋ | Streaming SSR (RSC + Suspense) | ๊ธฐ์กด SSR | ์ค๋ช |
---|---|---|---|
Content-Type |
text/x-component |
text/html; charset=utf-8 |
RSC ์ ์ฉ MIME ํ์ . React๊ฐ ํด๋ผ์ด์ธํธ์์ ์ด๊ฑธ ํด์ํด์ ์ปดํฌ๋ํธ๋ก hydration ํจ. ๊ธฐ์กด SSR์ ์ผ๋ฐ HTML ์๋ต |
Transfer-Encoding |
chunked |
(์์) or ์๋ ์ค์ | ์๋ต์ chunk ๋จ์๋ก ์คํธ๋ฆฌ๋ฐ ์ ์กํจ. HTML ์ ์ฒด๊ฐ ์๋, ์ผ๋ถ๋ง ๋จผ์ ๋ณด๋ด๊ณ ๋๋จธ์ง๋ ์์ฐจ์ ์ผ๋ก |
Connection |
keep-alive |
close ๋๋ ์๋ต |
์คํธ๋ฆฌ๋ฐ ๋์ ์ฐ๊ฒฐ์ ์ ์งํด์ผ ํ๋ฏ๋ก, keep-alive ๋ก ๋ช
์. ๊ธฐ์กด SSR์ ์๋ต ๋๋๋ฉด ๋ฐ๋ก ๋์ |
Keep-Alive |
timeout=5 |
์์ | ์๋ฒ๊ฐ ์ปค๋ฅ์ ์ ์ต๋ 5์ด๊ฐ ์ ์งํ๋ฉด์ chunk ์ ์กํ ์ ์์. Chunk๊ฐ ์์ผ๋ฉด timeout ํ ์ข ๋ฃ |
Cache-Control |
no-store , must-revalidate |
public, max-age=0, s-maxage=0, must-revalidate ๋ฑ |
Streaming SSR์ ์บ์๋ฅผ ํผํ๊ธฐ ์ํด ๋ช ์์ ์ผ๋ก no-store. ๊ธฐ์กด SSR๋ no-cache์ผ ์ ์์ผ๋, ์ผ๋ถ ISR์ ์บ์ฑ ํ์ฉ |
Content-Encoding |
gzip |
gzip or ์์ |
์๋ต์ด gzip์ผ๋ก ์์ถ๋จ. Streaming์์๋ ์์ถ๋ chunk๊ฐ ์์ฐจ์ ์ผ๋ก ์ ๋ฌ๋จ |
Vary |
RSC , Next-Router-State-Tree , ... |
๋ณดํต Accept-Encoding , Cookie ๋ฑ |
Vercel CDN์ด๋ ํด๋ผ์ด์ธํธ๊ฐ RSC ์ํ, ๋ผ์ฐํฐ ์ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ต์ ๊ตฌ๋ถํ ์ ์๋๋ก ํํธ ์ ๊ณต |
rsc (Request ํค๋) |
1 |
์์ | ํด๋ผ์ด์ธํธ๊ฐ React Server Component๋ฅผ ์์ฒญํ๋ค๋ ํ๋๊ทธ. Next.js๊ฐ ์ด๊ฑธ ๋ณด๊ณ RSC ์๋ต ์์ฑ |
next-router-state-tree |
์กด์ฌ | ์์ | ํด๋ผ์ด์ธํธ ๋ผ์ฐํฐ ์ํ ํธ๋ฆฌ๋ฅผ ์๋ฒ์ ์ ๋ฌํด์ ์ ํํ ๊ฒฝ๋ก ๋งคํ, prefetch ๋์ |
Accept |
*/* |
๋์ผ | ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ค ํ์ ์ ์๋ต๋ ํ์ฉ |
Accept-Encoding |
gzip, deflate, br, zstd |
๋์ผ | ์ด๋ค ์์ถ ํฌ๋งท์ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฉ ๊ฐ๋ฅํ์ง ์ ๋ฌ |
Content-Length |
์์ (chunked ์ด๋ฏ๋ก) |
์์ (์๋ฃ๋ HTML์ ์ด ํฌ๊ธฐ) | Streaming์ ์ด ๊ธธ์ด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ต๋๊ณ , ๋์ chunked ์ ์ก ์ฌ์ฉ |
ํค๋ ์ญํ | Streaming SSR | ๊ธฐ์กด SSR |
---|---|---|
MIME ํ์ | text/x-component โ RSC |
text/html |
์ ์ก ๋ฐฉ์ | chunked โ flush() ์คํธ๋ฆฌ๋ฐ |
์ ์ฒด ์๋ต ์๋ฃ ํ ์ ์ก |
์ฐ๊ฒฐ ์ํ | keep-alive โ ์ฐ๊ฒฐ ์ ์ง |
์๋ต ํ close |
์๋ต ๊ธธ์ด | ๋ฏธ์ (Content-Length ์์) | ๊ณ ์ ๊ธธ์ด ์์ |
์บ์ ์ ์ฑ | no-store , must-revalidate |
ํ์์ ๋ฐ๋ผ ์บ์ ํ์ฉ ๊ฐ๋ฅ |
CDN ๋์ | Vary: RSC, ๋ผ์ฐํฐ ์ํ โ ์๋ต ๋ค์ํ |
๋จ์ Accept-Encoding , Cookie ๋ฑ |
Vary
ํค๋์ ์ญํ Streaming SSR์์ ์๋ต์ ๋ฐ๋ผ ์ด๋ ๊ฒ ๋ค์ด๊ฐ:
โก๏ธ ์ด๋ "RSC ์ฌ๋ถ", "๋ผ์ฐํฐ ์ํ", "์์ถ ์ฌ๋ถ"์ ๋ฐ๋ผ ์๋ฒ๊ฐ ์๋ก ๋ค๋ฅธ HTML chunk ์กฐํฉ์ ์ ์กํ ์ ์์์ ๋ช ์ํจ
โก๏ธ CDN ์บ์ฑ์์ ์๋ชป๋ ์๋ต ๊ณต์ ๋ฅผ ๋ฐฉ์งํ ์ ์์
Streaming SSR์ HTTP ๋ ๋ฒจ์์๋ ์์ ํ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์๋ํจ
ํนํ
text/x-component
,chunked
,rsc: 1
,Vary
๋ฑ์ ๊ธฐ์กด SSR์๋ ์๋ Streaming ํนํ ํค๋๋ค์ด๊ณ ,์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์ Next.js๊ฐ HTML์ด ์๋ "์ปดํฌ๋ํธ ์กฐ๊ฐ"์ ์ฃผ๊ณ ๋ฐ๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํจ