๋ง ๊ทธ๋๋ก ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์์ ์น ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๊ฒ์ด๋ค. ๋ชจ๋ ๋ก์ง, ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ํ ํ๋ฆฟ, ๋ผ์ฐํ ์ ์๋ฒ๊ฐ ์๋ ๋ชจ๋ ํด๋ฆฌ์ด์ธํธ์์ ์ฒ๋ฆฌ๋๋ค.
CSR์ ๊ฒฝ์ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ํฌ๊ธฐ์ ์ํฅ์ ๋ง์ด ๋ฐ๊ธฐ ๋๋ฌธ์ ์ ๊ทน์ ์ธ ์ฝ๋ ๋ถํ (code splitting)์ ๊ณ ๋ คํด์ผ ํ๋ฉฐ, "ํ์ํ ๊ฒ๋ง ํ์ํ ๋๋ง ์ ๊ณต"ํด์ผ ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ด ๋์ํ๋ค.
1. ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด(request), ๋ธ๋ผ์ฐ์ ๋ ์ต์ํ์ HTML ํ์ผ์ ๋ค์ด๋ก๋(response) ํ๋ค. ์ด HTML ํ์ผ์ script, meta, link ๋ฑ์ ํ๊ทธ๋ฅผ ํฌํจํ๋ฉฐ, ๋น ์ปจํ
์ธ ์ index.html ํ์ผ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
2. ๋ธ๋ผ์ฐ์ ๋ index.html์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํ์ผ์ ๋ค์ด๋ก๋ํ ๋ค์ AJAX๋ฅผ ํตํด API ์์ฒญ์ ์ํํ์ฌ ๋์ ์ปจํ
์ธ ๋ฅผ ๊ฐ์ ธ์ค๊ณ ํ์ฑํ์ฌ ์ต์ข
์ปจํ
์ธ ๋ฅผ ๋ ๋๋งํ๋ค.
3. ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ ๊ฒฝ์ฐ, ์๋ฒ์ ์ถ๊ฐ HTMLํ์ผ์ ์์ฒญํ์ง ์๊ณ ์ด๋ฏธ ๋ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ ๋๋ง ํ๋ค.
ํ์ ํ์ด์ง ๋ก๋ ์๊ฐ์ด ๋ ๋น ๋ฅด๋ค. CSR์ ์ํด ์ด๋ฏธ ๋ชจ๋ ์ง์ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ ์ ๋ก๋๋์๊ธฐ ๋๋ฌธ์ CSR์ ๋ก๋ ์๊ฐ์ด ์ค์ด๋ ๋ค.
๋ณ๋์ API๋ฅผ ํธ์ถํ ํ์๊ฐ ์๋ ํ์ด์ง์ด๊ฑฐ๋ ์ง์ฐ ๋ก๋ฉ ๋ชจ๋์ด ํ์ํ์ง ์๋ค, ์ด๋ฏธ ์คํฌ๋ฆฝํธ๊ฐ ์บ์ฑ๋ ๊ฒฝ์ฐ ์ธํฐ๋ท ์์ด๋ ํด๋น CSR ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ค.
CSR์ ์๋ฒ๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ ์ฒด UI๋ฅผ ๋ค์ ๋ก๋ํ ํ์๊ฐ ์๋ค.
์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ด SSR์ ๋นํด ๋๋ฆฌ๋ค. CSR์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ปจํ ์ธ ๋ก HTML์ ์ปดํ์ผํ๊ธฐ ์ ์ ๊ธฐ๋ณธ HTML, CSS ๋ฐ ๋ชจ๋ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ด๋ค.
SEO์ ์นํ์ ์ด์ง ์๋ค. ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๊ฐ ํด๋น ํ์ด์ง์ ์ฒ์ ๋ฐฉ๋ฌธํ์๋๋ ๋น ํ์ด์ง์ด๊ธฐ ๋๋ฌธ์ ์ดํดํ ์๊ฐ ์๋ค. ๋ฌผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํ์ํฌ ์ ์๋ ๊ตฌ๊ธ ํฌ๋กค๋ฌ์ ๊ฐ์ ๊ฒ์์์ง ํฌ๋กค๋ฌ๊ฐ ๋ฑ์ฅํ๊ณ ์๊ธดํ์ง๋ง, ์์ง ๋ง์ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ๋ค์ด ์ง์๋์ง ์๋๋ค.
๋ํ ํ์ด์ง ๋ฉํ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์ํ ์ถ๊ฐ์ ์ธ ๋ ธ๋ ฅ์ด ํ์ํ๋ค. ํ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ก ๋ณํ ๊ฒฝ์ฐ ์ด๋ฅผ ์ธ์ง ์์ผ์ฃผ๊ธฐ ์ํด ๊ฐ ํ์ด์ง์ ๋ํ ๋ฉํ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๊ณ ํด๋ผ์ด์ธํธ์์ ๋ ๋๋งํ๊ธฐ ์ํด ์ถ๊ฐ ๋ ธ๋ ฅ์ด ํ์ํ๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ํ์ํ๊ธฐ ์ ์ HTML ๋ฐ JavaScript ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ํ๋ ์ ์ํฌ๋ฅผ ์คํํ๋ ๋์ ์ฌ์ฉ์๋ ๋นํ์ด์ง๋ฅผ ๋ณด๊ฒ ๋๋ฏ๋ก ์ฌ์ฉ์ ๊ฒฝํ(UX)๊ฐ ์ข์ง ์๋ค.
ํด๋ผ์ด์ธํธ์ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด์ ๋๋ฌด ๋ง์ด ์์กดํ๋ค. ์ฌ์ฉ์ ๊ธฐ๊ธฐ์ ๋ฐ๋ผ, ํ์ ์ง์๋๋ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ์ฌ์ฉ์๋ผ๋ฉด, ์ต์ ์ ์๊ฐ์ ํ์ด์ง๋ฅผ ๋ ๋๋งํ์ง ๋ชปํ๊ฒ ๋ ํ๋ฅ ์ด ํฌ๋ค. ํ์ด์ง์ ์ดํ๋ฅ ์ ํ์ด์ง ๋ก๋์๊ฐ์ ์ ๋น๋กํ๋ค. ๋ํ ์ดํ๋ฅ ์ด ๋์์๋ก ๊ฒ์์์ง ์์๋ ๋ฎ์ ์ง ์ ์๋ค.
ํด๋ผ์ด์ธํธ์ธก ๋๋ ์ ๋๋ฒ์ ์ฑ์ ์๋ฒ์ HTML๋ก ๋ ๋๋งํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์๋ต์ ๋ฐ๊ธฐ ์ ์ ๋ฐ์ดํฐ ํจ์นญ ๋ฐ ํ ํ๋ฆฟ ์์ฑ์ด ์ฒ๋ฆฌ๋๋ฏ๋ก ํด๋ผ์ด์ธํธ์์ ์ ํ์์ ๋ ์ถ๊ฐ ์๋ณต์ด ๋ฐ์ํ์ง ์๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์๋์ ๊ฐ์ด ๋์ํ๋ค.
1. ์ฌ์ฉ์๊ฐ ์น ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด(request), ์๋ฒ๋ ๋ฆฌ์์ค๋ฅผ ํ์ธํ๊ณ ํ์ด์ง ๋ด์ ์๋ ์๋ฒ์ธก ์คํฌ๋ฆฝํธ๋ฅผ ์คํ ํ HTML ์ปจํ
์ธ ๋ฅผ ์ปดํ์ผ ๋ฐ ์ค๋นํ๋ค.
2. ์ปดํ์ผ๋ HTML์ ์ถ๊ฐ ๋ ๋๋ง ๋ฐ ํ์๋ฅผ ์ํด ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ๋ก ์ ์ก๋๋ค(response).
3. ๋ธ๋ผ์ฐ์ ๋ HTML์ ๋ค์ด๋ก๋ํ๊ณ ์ต์ข
์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๋ณผ ์ ์๋๋ก ํ๋ค.
4. ๋ธ๋ผ์ฐ์ ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ๋ฉด์ ํ์ด์ง๋ฅผ ๋ํํ(interactive)์ผ๋ก ๋ง๋ ๋ค.
5. ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ ๊ฒฝ์ฐ, ์ ๋์์ ๋ฐ๋ณตํ๋ค.
์ด๊ธฐ ํ์ด์ง ๋ก๋์๊ฐ์ด ๋น ๋ฅด๋ค(FP ๋ฐ FCP๊ฐ ๋น ๋ฅด๋ค). ๋ ๋๋ง์ด ์ค๋น๋ HTML ํ์ผ์ ๋ธ๋ผ์ฐ์ ์์ ๋ก๋ํ๊ธฐ ๋๋ฌธ์ CSR์ ๋นํด ๋ ๋น ๋ฅด๋ค.
์๋ฒ์์ ํ์ด์ง ๋ก์ง ๋ฐ ๋ ๋๋ง์ ์คํํ๋ฉด ๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด์ง ์์๋ ๋๋ฏ๋ก TTI(Time to Interactive)๋ฅผ ๋น ๋ฅด๊ฒ ์ํํ ์ ์๋ค.
SEO์ ์นํ์ ์ด๋ค. ์ด๋ฏธ ๋ค ๋ง๋ค์ด์ง ํ์ด์ง๋ฅผ ๊ฒ์์์ง ํฌ๋กค๋ฌ๊ฐ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
ํด๋ผ์ด์ธํธ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ์ฑ๋ฅ์ ์ํฅ์ ๋ ๋ฐ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๋ฒ๋ ๋ ๋์ ์ปดํจํ ์ฑ๋ฅ๊ณผ ํจ์ฌ ๋ ๋์ ๋คํธ์ํน ์๋๋ฅผ ๊ฐ์ง ์์คํ ์ด๋ค. ํด๋ผ์ด์ธํธ์์๋ ์๋ฒ์์ ์์ฑ๋ ํ์ด์ง๋ง ๋ ๋๋งํด ์ฃผ๋ฉด ๋๋ค. ์ฆ ํด๋ผ์ด์ธํธ์ ๋ถ๋ด์ด CSR์ ๋นํด ๋ํ๋ค.
ํ์ด์ง ์ด๋์๋ง๋ค ์๋ฒ์์ ํ์ด์ง๋ฅผ ์์ฑํ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ TTFB(Time to First Byte)๊ฐ ๋๋ฆฌ๋ค.
ํ์ด์ง ๋ก๋๊ฐ ๋๋ฌด ๋ฌด๊ฒ๋ค๋ฉด, ์คํ๋ฆฌ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋๊ฒ ์๋๋ผ ํด์น ์ ์๋ค. ์ด๊ธฐ ํ์ด์ง ๋ก๋์ ๋ฐ์ดํฐ๊ฐ ๋ง์ด ํ์ํ ๋์ ๋ณด๋๊ฐ ์๊ฐ ๋ ์ ์๋ค.
์๋ฒ๋ ํญ์ ๊ฐ ์์ฒญ์ด ์ฌ๋๋ง๋ค HTMLํ์ผ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ CDN ์์ค์์์ ์ปจํ ์ธ ์บ์๊ฐ ๋์ง ์๋๋ค.
์๋ฒ์ ํธ์คํ ์ด ํ์ํ๋ค. ํด๋ผ์ด์ธํธ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ๋ ๋๋งํ๋ CSR์ ๋นํด ์๋ฒ ์ฌ์ด๋์์ HTMLํ์ผ๊ณผ ์์ ๋ด์ฉ์ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ํธ์คํ ์ด ํ์ํ๋ค.
CSR์ ๋นํด ๋ ๋ง์ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ด ํ์ํ๋ฉฐ, SSR ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ถ๊ฐ์ ์ธ ๋ฌ๋ ์ปค๋ธ์ ๋ํ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
์ถ์ฒ : https://ajdkfl6445.gitbook.io/study/