Programming

ํ”„๋กœ์ ํŠธ๊ฐ€ SSR์ธ์ง€ CSR์ธ์ง€ ํ™•์ธํ•ด๋ณด๊ธฐ

seulye 2024. 11. 12. 10:01

 

  SSR(Server Side Rendering) CSR(Client Side Rendering)
์„ค๋ช… ์ „ํ†ต์ ์ธ ์›น ๋ฐฉ์‹์„ ์˜๋ฏธํ•˜๋ฉฐ ํŽ˜์ด์ง€๊ฐ€ ์ƒˆ๋กœ๊ณ ์นจ ๋  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค(๊ด€๋ จ๋œ HTML, CSS, JS ํŒŒ์ผ ๋ฐ ๋ฐ์ดํ„ฐ)๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ํ™”๋ฉด์— ๋ Œ๋”๋ง ํ•˜๋Š” ๋ฐฉ์‹.
์š”์ฒญ์‹œ๋งˆ๋‹ค ์ƒˆ๋กœ๊ณ ์นจ์ด ์ผ์–ด๋‚˜๋ฉฐ ์„œ๋ฒ„์— ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•˜๋Š” ๋ฐฉ์‹ => ์ด๋ฏธ ๋‹ค ๋งŒ๋“ค์–ด์ง„ DOM์„ ๋ฐ›์Œ.
์ตœ์ดˆ ๋กœ๋“œ์‹œ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์ „๋ถ€ ๋ฐ›๊ณ , ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐ๋ ‰์…˜์— ๋”ฐ๋ผ์„œ ํด๋ผ์ด์–ธํŠธ๋‹จ์—์„œ ๋ฐ›์•„์™€ ๋žœ๋”๋ง์„ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ => ๊ธฐ๋ณธ ํ‹€๋งŒ ๋ฐ›๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘์œผ๋กœ DOM์„ ๊ทธ๋ฆผ
์žฅ์  ์ดˆ๊ธฐ ํ™”๋ฉด์˜ ๋ Œ๋”๋ง ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ, SEO์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Œ. ๋ Œ๋”๋ง ์†๋„๊ฐ€ ๋น ๋ฆ„
๋‹จ์  ๋งค ๋žœ๋”๋ง๋งˆ๋‹ค ์„œ๋ฒ„๋ฅผ ๊ฑฐ์นจ์œผ๋กœ ์†๋„๊ฐ€ ๋А๋ฆผ.  ์ดˆ๋ฐ˜์— ๋ผˆ๋Œ€๋งŒ ๋‹ค์šด๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, SEO์— ์ทจ์•ฝ, ์ดˆ๊ธฐ ํ™”๋ฉด์˜ ๋ Œ๋”๋ง ์†๋„๊ฐ€ ๋А๋ฆผ.

* SEO(Search Engine Optimization) : ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”

 

SSR vs CSR

https://solo5star.dev/posts/44/

 

React SSR (์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง) ์–•๊ฒŒ ์‹œ์ž‘ํ•ด๋ณด๊ธฐ (React.hydrateRoot)

React์˜ SSR(์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง) ๊ฐœ๋…์— ๋Œ€ํ•ด React.hydrateRoot์™€ ํ•จ๊ป˜ ๊ฐ€๋ณ๊ฒŒ ์‹œ์ž‘ํ•ด๋ด…์‹œ๋‹ค

solo5star.dev

 

์ด ๋ธ”๋กœ๊ทธ์˜ ๋™์˜์ƒ์ด ์ดํ•ดํ•˜๋Š” ๋ฐ์— ํฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค. 

 

 

1. ๋„คํŠธ์›Œํฌ ํƒญ ํ™•์ธ

 

Network ์—์„œ localhost๋ฅผ ์„ ํƒํ›„, Response๋ฅผ ๋ณด๋ฉด bodyํƒœ๊ทธ์— ์•„๋ฌด๋Ÿฐ ๋‚ด์šฉ์ด ์—†๋‹ค => CSR

 

 

 

Element์—์„œ๋Š” ์œ„์™€ ๋‹ค๋ฅด๊ฒŒ body ํƒœ๊ทธ ํ•˜์œ„์— ์—ฌ๋Ÿฌ ๋‚ด์šฉ๋“ค์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋‚ด์šฉ๋“ค์€ bundle.js๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•œ๋‹ค. 

 

1. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด HTML , CSS , JS (bundle.js) ํŒŒ์ผ์„ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค.
2. HTML ์—๋Š” ๋ผˆ๋Œ€๋งŒ ์žˆ๋Š” ์ƒํƒœ์ด๊ณ  ํด๋ผ์ด์–ธํŠธ๋Š” bundle.js ๋ฅผ ํ•ด์„ํ•ด์„œ ๋ Œ๋”๋งํ•œ๋‹ค.

 

- ์ถœ์ฒ˜

https://velog.io/@cheal3/%EC%84%9C%EB%B2%84%EC%82%AC%EC%9D%B4%EB%93%9C-%EB%A0%8C%EB%8D%94%EB%A7%81-SSR-%EA%B3%BC-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%82%AC%EC%9D%B4%EB%93%9C-%EB%A0%8C%EB%8D%94%EB%A7%81-CSR-%EC%97%90-%EB%8C%80%ED%95%B4

 

์„œ๋ฒ„์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (SSR) ๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง (CSR) ์— ๋Œ€ํ•ด

๊ธฐ๋ณธ์ ์œผ๋กœ ์›น์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋Š” ๊ทธ ์š”์ฒญ์„ ๋ณด๊ณ  ํŠน์ • ์ •๋ณด๋ฅผ ์‘๋‹ตํ•ด ์ฃผ๊ณ  , ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋ฐ›์€ html ๋ฌธ์„œ๋ฅผ ๋ณด๊ณ  D

velog.io

 

2. Disable JavaScript

 

JavaScript๋ฅผ disableํ•˜๋ฉด, ํ™”๋ฉด์— enableํ•ด์•ผ runํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋œฌ๋‹ค. => CSR

 

 

 

React๋Š” ์›๋ž˜ CSR(Client-Side Rendering) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์ง€๋งŒ, Next.js์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ์ดˆ๊ธฐ HTML์„ ๋ Œ๋”๋งํ•ด ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ž˜์„œ ์š”์ฆ˜ Next.js ๋ฅผ ๋งŽ์ด ์“ฐ๋‚˜๋ณด๋‹ค.