# [[Client-Side Rendering (CSR)]] ## ๐ Brief Summary Client-Side Rendering (CSR)์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ก๋ถํฐ ์ต์ํ์ ๋น HTML ๊ป๋ฐ๊ธฐ์ JavaScript ๋ฒ๋ค์ ์ ๋ฌ๋ฐ์ ํ, ํด๋ผ์ด์ธํธ ํ๊ฒฝ์์ JavaScript๋ฅผ ์คํํ์ฌ ๋์ ์ผ๋ก UI์ ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ๋ ์น ์ํคํ ์ฒ ๋ฐฉ์์ ๋๋ค [1]. ์ ์ฒด ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ๋น ๋ฅด๊ณ ๋งค๋๋ฌ์ด ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๊ตฌํํ ์ ์์ด ์ํธ์์ฉ์ด ์ฆ์ ์๋น์ค์ ์ ํฉํ์ง๋ง, ์ด๊ธฐ ๋ก๋ ์๋์ ๊ฒ์ ์์ง ์ต์ ํ(SEO) ์ธก๋ฉด์์๋ ์น๋ช ์ ์ธ ํ๊ณ์ ์ทจ์ฝ์ ์ ๊ฐ์ง๋๋ค [2-4]. ## ๐ Core Content - **์๋ ๋ฉ์ปค๋์ฆ:** ์ฌ์ฉ์๊ฐ ์นํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ ์ฝํ ์ธ ๊ฐ ๊ฑฐ์ ์๋ ๋น HTML ๋ฌธ์(์: `
`)๋ฅผ ๋ฐํํฉ๋๋ค [5, 6]. ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น HTML์ ํฌํจ๋ JavaScript ํ์ผ์ ๋ชจ๋ ๋ค์ด๋ก๋ํ๊ณ ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ์คํ์ ์๋ฃํ ํ์์ผ ๋น๋ก์ ์ค์ UI์ ์ฝํ ์ธ ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ง๋๋ค [1, 6, 7]. - **์ฃผ์ ์ฅ์ :** ์๋ฒ์ ๋ ๋๋ง ์ฐ์ฐ ๋ถ๋ด์ ๋ธ๋ผ์ฐ์ ๋ก ๋ถ์ฐ์์ผ ์๋ฒ ๋ถํ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค [3]. ํ์ด์ง๋ฅผ ๋๊ธธ ๋๋ง๋ค ์ ์ฒด๋ฅผ ์๋ก๊ณ ์นจํ ํ์ ์์ด ๊ณ ๋๋ก ์ํธ์์ฉ์ ์ธ ์ฑ ์ ์ฌ(App-like) ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฏ๋ก, ๊ฒ์ ๋ ธ์ถ์ด ํ์ ์๋ ์ฌ์ฉ์ ๋์๋ณด๋, ๊ด๋ฆฌ์ ํจ๋, ๋ด๋ถ ๋๊ตฌ ๋ฑ์ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ต๋๋ค [1-3]. - **์ฑ๋ฅ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ(UX) ํ๊ณ:** JavaScript๊ฐ ๋ค์ด๋ก๋ ๋ฐ ์คํ๋๊ธฐ ์ ๊น์ง ์ฌ์ฉ์๋ ๋น ํ๋ฉด์ด๋ ๋ก๋ฉ ํ๋ฉด๋ง ๋ณด๊ฒ ๋๋ฏ๋ก ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฝ๋๋ค [3]. ํนํ, ๋ฌด๊ฑฐ์ด JavaScript ๋ฒ๋ค์ ํฌ๊ธฐ์ ํ์ด๋๋ ์ด์ (Hydration) ์ง์ฐ์ ๋ชจ๋ฐ์ผ ํ๊ฒฝ ๋ฑ์์ Largest Contentful Paint (LCP)์ Interaction to Next Paint (INP) ๊ฐ์ Core Web Vitals ์งํ์ ์น๋ช ์ ์ธ ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค [8-11]. - **SEO ๋ฐ ์ธ๋ฑ์ฑ(ํฌ๋กค๋ง) ๋ฌธ์ :** ์ ํต์ ์ธ ๊ฒ์ ์์ง ํฌ๋กค๋ฌ(์: Googlebot) ๋ฐ AI ์์ด์ ํธ๋ ์ด๊ธฐ์ ๋ฐํ๋ ๋น HTML๋ง์ ํ์ธํ์ฌ ์ฝํ ์ธ ๊ฐ ์๋ค๊ณ ํ๋จํ๊ธฐ ์ฝ์ต๋๋ค [6, 12]. ํฌ๋กค๋ฌ๊ฐ JavaScript๋ฅผ ์คํํ๋ ๋ ๋ฒ์งธ ์ธ๋ฑ์ฑ ๋จ๊ณ(Two-wave indexing)์ ๋ค์ด๊ฐ๋๋ผ๋, ๋ ๋๋ง ๋๊ธฐ์ด์์ ๋ฉฐ์น ๋๋ ๋ช ์ฃผ๊ฐ ์ง์ฐ๋ ์ ์์ผ๋ฉฐ, ์๊ฐ ์ด๊ณผ ์ค๋ฅ๋ก ์ฝํ ์ธ ๊ฐ ์์ ๋๋ฝ๋ ์ํ๋ ์ปค SEO ๋ญํน ํ๋ฝ๊ณผ ์ ๊ธฐ์ ํธ๋ํฝ ๊ธ๊ฐ์ ์ฃผ์์ธ์ด ๋ฉ๋๋ค [4, 7, 13-15]. - **๋ณด์์ ๋ณต์ก์ฑ:** ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ด ํด๋ผ์ด์ธํธ๋ก ์ด๋ํจ์ ๋ฐ๋ผ, ๋ถ์ ์ ํ๊ฒ ์ฒ๋ฆฌ๋ ๋์ ์ฝํ ์ธ ๋ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS) ๊ณต๊ฒฉ์ ๋ ธ์ถ๋๊ธฐ ์ฝ์ต๋๋ค. ๋ฐ๋ผ์ API ํต์ ์ ๋ํ ์์ ํ ์ธ์ฆ๊ณผ ๊ฐ๋ ฅํ ์ฝํ ์ธ ๋ณด์ ์ ์ฑ (CSP) ํค๋ ์ ์ฉ์ด ํ์์ ์ ๋๋ค [16, 17]. - **์ต์ ํ ๊ถ์ฅ ์ฌํญ:** CSR์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋์ ์ํฌํธ(Dynamic imports)์ ๋ผ์ฐํธ ๊ธฐ๋ฐ ์ฝ๋ ์คํ๋ฆฌํ (Route-based code splitting)์ ์ ์ฉํ์ฌ ์ด๊ธฐ ๋ก๋ฉ์ ํ์ํ JS ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ผ ํฉ๋๋ค [18, 19]. ๋ํ SEO์ ์ด๊ธฐ ์ฑ๋ฅ์ด ์ค์ํ ํผ๋ธ๋ฆญ ํ์ด์ง์ ๊ฒฝ์ฐ CSR์ ๋จ๋ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ณด๋ค๋ Server-Side Rendering (SSR)์ด๋ Static Site Generation (SSG) ๋ฐฉ์๊ณผ ๊ฒฐํฉํ๋ ํ์ด๋ธ๋ฆฌ๋ ์ํคํ ์ฒ ์ฑํ์ด ์ ๊ทน ๊ถ์ฅ๋ฉ๋๋ค [20-22]. ## ๐ Knowledge Connections - **Related Topics:** [[Server-Side Rendering (SSR)]], [[Single Page Application (SPA)]], [[Search Engine Optimization (SEO)]], [[Core Web Vitals]] - **Projects/Contexts:** [[React Router ๊ธฐ๋ฐ์ ์ค์ฒฉ ๋ผ์ฐํธ ๋ฐ ์ฝ๋ ์คํ๋ฆฌํ ์ต์ ํ ์ ๋ต]], [[Next.js ๋๋ Remix๋ฅผ ํ์ฉํ E-commerce SEO ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฉ ์ฌ๋ก]] - **Contradictions/Notes:** ์์ค ๋ด์์ CSR์ ์๋ฒ ์ฐ์ฐ์ ๊ฑฐ์น์ง ์์ ์ ์ ์์ฐ ๋ก๋ฉ ์ "์์ฒญ๋๊ฒ ๋น ๋ฅธ(Lightning-fast) ์ฒซ ์ฝํ ์ธ ํ์ธํธ(FCP)์ ๋งค๋๋ฌ์ด TTI"๋ฅผ ์ ๊ณตํ ์ ์๋ค๊ณ ์ธ๊ธ๋์ง๋ง[23], ์ค์ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฌด๊ฑฐ์ด JS ๋ฒ๋ค์์๋ ๋ ๋๋ง ๋ธ๋กํน ๋ฐ ํ์ด๋๋ ์ด์ ์ง์ฐ์ผ๋ก ์ธํด ์คํ๋ ค FCP์ LCP ์งํ๊ฐ ์ฌ๊ฐํ๊ฒ ์ ํ๋๋ค๊ณ ๊ฒฝ๊ณ ํ๋ ๋ฑ ์ต์ ํ ์์ค์ ๋ฐ๋ผ ์ฑ๋ฅ ๊ฒฐ๊ณผ๊ฐ ์์ถฉํ๊ฒ ๋ํ๋ฉ๋๋ค[11, 24]. --- *Last updated: 2026-04-26*