WEB

μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR) , ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)

orange_mj 2024. 2. 19. 21:29

πŸ”₯ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§μ΄λž€? (SRS: Server Side Rendering)

μ„œλ²„μ—μ„œ νŽ˜μ΄μ§€λ₯Ό κ·Έλ € ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €)둜 보낸 ν›„ 화면에 ν‘œμ‹œν•˜λŠ” 기법을 μ˜λ―Έν•©λ‹ˆλ‹€. 

SSR은 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λͺ¨λ“  것을 μ²˜λ¦¬ν•˜μ§€ μ•Šκ³ , μ›Ή μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λ©΄ μ„œλ²„μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό λͺ¨λ‘ κ°€μ Έμ™€μ„œ HTML νŒŒμΌμ„ λ§Œλ“€κ²Œ 되고, λ§Œλ“€μ–΄μ§„ HTMLκ³Ό HTML νŒŒμΌμ„ λ™μ μœΌλ‘œ 쑰금 μ œμ–΄ν•  수 μžˆλŠ” μ†ŒμŠ€μ½”λ“œμ™€ ν•¨κ»˜ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 보낸닀. ν΄λΌμ΄μ–ΈνŠΈλŠ” 잘 λ§Œλ“€μ–΄μ§„ HTML λ¬Έμ„œλ₯Ό μ‚¬μš©μžμ—κ²Œ λ°”λ‘œ λ³΄μ—¬μ£Όκ²Œ λœλ‹€.

 

μž₯점

  • νŽ˜μ΄μ§€ λ‘œλ”© 속도가 빨라진닀
  • λͺ¨λ“  μ½˜ν…μΈ κ°€ HTML 에 ν‘œκΈ°λ˜κΈ° λ•Œλ¬Έμ— 효율적인 κ²€μƒ‰μ—”μ§„μ΅œμ ν™”(SEO) κ°€ κ°€λŠ₯ν•˜λ‹€.

단점

  • Blinking Issue : μƒˆλ‘œκ³ μΉ¨μ„ ν•˜κ²Œ 되면 전체 νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ μ„œλ²„μ—μ„œ 받아와야 ν•˜κΈ°μ— 화면이 μ—†μ–΄μ‘Œλ‹€κ°€ λ‚˜νƒ€λ‚œλ‹€.
  • μ„œλ²„ κ³ΌλΆ€ν•˜ : μ‚¬μš©μžκ°€ λ§Žμ€ μ œν’ˆμΌ 수둝 μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•˜λŠ” νšŸμˆ˜κ°€ λ§Žμ•„μ§€κΈ° λ•Œλ¬Έ

 

πŸ”₯ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§μ΄λž€? (CRS: Client Side Rendering)

CSR은 SPA νŠΈλ Œλ“œμ™€ CPU μ„±λŠ₯ μƒμŠΉ + JS ν‘œμ€€ν™”(λ¦¬μ•‘νŠΈ, λ·°, μ•΅κ·€λŸ¬ λ“±μ˜ ν”„λ ˆμž„μ›Œν¬ λ°œμ „)와 ν•¨κ»˜ 본격적으둜 μ‹œμž‘λ˜μ—ˆλ‹€. CSR은 μ‰½κ²Œ λ§ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λͺ¨λ‘ μ²˜λ¦¬ν•˜λŠ” 것인데, μ„œλ²„μ—μ„œ 전체 νŽ˜μ΄μ§€λ₯Ό ν•œλ²ˆ λ Œλ”λ§ ν•˜μ—¬ 보여주고 μ‚¬μš©μžκ°€ μš”μ²­ν•  λ•Œλ§ˆλ‹€ λ¦¬μ†ŒμŠ€λ₯Ό μ„œλ²„μ—μ„œ μ œκ³΅λ°›μ•„ ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄μ„ν•˜κ³  λ Œλ”λ§ ν•˜λŠ” 방식이닀. μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§κ³Ό 달리 μ„œλ²„μ— HTML λ¬Έμ„œλ₯Ό μš”μ²­ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, λΈŒλΌμš°μ €μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ½˜ν…μΈ λ₯Ό λ Œλ”λ§ ν•˜λŠ” 것이닀.

*SPA (Single Page Application) : 졜초 ν•œ 번 νŽ˜μ΄μ§€ 전체λ₯Ό λ‘œλ”©ν•œ λ’€, λ°μ΄ν„°λ§Œ λ³€κ²½ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜

body μ•ˆμ—λŠ” id="root"만 λ‹¬λž‘ ν•˜λ‚˜ λ“€μ–΄μžˆκ³ , μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 링크만 λ“€μ–΄κ°€μžˆλ‹€.

HTML이 ν……ν…… λΉ„μ–΄μžˆκΈ° λ•Œλ¬Έμ— 처음 μ ‘μ†ν•˜κ²Œ 되면 빈 ν™”λ©΄λ§Œ 보이게 되고, 링크된 μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ‹€μš΄λ‘œλ“œ λ°›κ²Œ λœλ‹€.μ—¬κΈ°μ—λŠ” μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ 둜직, κ΅¬λ™ν•˜κΈ° μœ„ν•œ ν”„λ ˆμž„μ›Œν¬, 라이브러리의 μ†ŒμŠ€μ½”λ“œλ“€λ„ λͺ¨λ‘ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

단점

  • μ„œλ²„ 첫 μš”μ²­ μ‹œ 전체 νŽ˜μ΄μ§€μ— λŒ€ν•œ λͺ¨λ“  νŒŒμΌμ„ λ°›κΈ° λ•Œλ¬Έμ—, μ‚¬μš©μžκ°€ 첫 화면에 λ“€μ–΄μ™€μ„œ λ³΄μ—¬μ§€λŠ” 데 μ‹œκ°„μ΄ μ˜€λž˜κ±Έλ¦°λ‹€.
  • κ²€μƒ‰μ—”μ§„μ΅œμ ν™”(SEO) 에 λŒ€ν•œ μΆ”κ°€ 보완 μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€.

μž₯점

  • μƒˆλ‘œκ³ μΉ¨μ΄ μ—†μœΌλ―€λ‘œ λΉ λ₯Έ μΈν„°λ ‰μ…˜ κ΅¬ν˜„
  • μ„œλ²„ νŠΈλž˜ν”½ κ°μ†Œ

 

μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§κ³Ό ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§ 차이점

μ–΄λ””μ„œ 화면에 보일 νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ κ·Έλ¦¬λŠλƒμ˜ μ°¨μ΄μž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§μ€ νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ λΈŒλΌμš°μ €μ—μ„œ 그리고 μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§μ€ μ„œλ²„μ—μ„œ νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ λ‹€ κ·Έλ €μ„œ λΈŒλΌμš°μ €λ‘œ λ˜μ Έμ€λ‹ˆλ‹€. μ•„λž˜μ™€ 같이 말이죠.

 

 

μ°Έκ³ 
startupcode
@ctdlog
joshua1988