Sam Baek, The Dev's Corner

๐ŸŽž ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

19 Jun 2023

๋ธŒ๋ผ์šฐ์ €์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ


๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์„ ์‚ดํŽด๋ณด๊ธฐ ์•ž์„œ, ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค : ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ๋ถ๋งˆํฌ ๋ฉ”๋‰ด ๋“ฑ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฐฝ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ถ€๋ถ„์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ € ์—”์ง„ : ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋ Œ๋”๋ง ์—”์ง„ ์‚ฌ์ด์˜ ๋™์ž‘์„ ์ œ์–ดํ•˜๋Š” ์—”์ง„์œผ๋กœ ํŽ˜์ด์ง€ ๋กœ๋“œ์™€ ๋ Œ๋”๋ง ์—”์ง„ ์ „๋‹ฌ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.
  • ๋ Œ๋”๋ง ์—”์ง„ : ์š”์ฒญํ•œ ์ปจํ…์ธ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์—”์ง„, ํ™”๋ฉด ์ถœ๋ ฅ
  • ๋„คํŠธ์›Œํฌ ์š”์ฒญ : HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. ๊ฐ ํ”Œ๋žซํผ ํ•˜๋ถ€์—์„œ ์‹คํ–‰๋˜๊ณ  ๋…๋ฆฝ์  ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค.
  • UI ๋ฐฑ์—”๋“œ : ์ฝค๋ณด ๋ฐ•์Šค, ์ฐฝ ๋“ฑ ๊ธฐ๋ณธ์  ์žฅ์น˜๋ฅผ ๊ทธ๋ ค๋‚ด๊ณ , ํ”Œ๋žซํผ์— ๋ช…์‹œํ•˜์ง€ ์•Š์€ ์ผ๋ฐ˜์  ์ธํ„ฐํŽ˜์ด์Šค
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๋ฉฐ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• 
  • ์ž๋ฃŒ ์ €์žฅ์†Œ : ์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์›น ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๊ฐ€ ์ •์˜๋ผ ์žˆ๋Š” ์žฅ์†Œ์ด๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ ๊ธฐ๋Šฅ : ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ํ˜น์€ ์‚ฌ์šฉ์ž ์ง€์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์›๋ฆฌ


๋ธŒ๋ผ์šฐ์ €๋Š” ์›นํ‚ท(webkit)์ด๋‚˜ ๊ฒŒ์ฝ”(Gecko) ๋“ฑ ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•ด ํ™”๋ฉด์˜ ์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.
๋ Œ๋”๋ง ์—”์ง„์€ HTML, CSS, JS๋กœ ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๊ฒฝ์šฐ, CRP(Cirtical Reandering Path) ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ง„ํ–‰๋œ๋‹ค.

CRP ํ”„๋กœ์„ธ์Šค๋Š” ํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„์™€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
๋ฆฌ์†Œ์Šค์˜ ์•„๋ถ์ด๋‚˜ ์บ์‹ฑ, ์ง€์—ฐ ์ตœ์†Œํ™” ๋“ฑ์„ ์‚ฌ์šฉํ•œ ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๋น ๋ฅธ ๋กœ๋”ฉ๊ณผ ๋ถ€๋“œ๋Ÿฌ์šด ๋ Œ๋”๋ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

CRP ํ”„๋กœ์„ธ์Šค

  • HTML ํŒŒ์‹ฑ : DOM(Document Object Model) TREE ๊ตฌ์ถ•
  • CSS ํŒŒ์‹ฑ : CSSOM(CSS Object Model) TREE ๊ตฌ์ถ•
  • JS ์‹คํ–‰ // HTML ๋‚ด๋ถ€ ์Šคํฌ๋ฆฝํŠธ ์กด์žฌ์‹œ HTML ํŒŒ์‹ฑ์€ ์ค‘๋‹จ๋œ๋‹ค.
  • ๋ Œํ„ฐ ํŠธ๋ฆฌ(Render Tree) ๊ตฌ์ถ• : DOM๊ณผ CSSOM์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ˜•์…ฉ๋˜๊ณ , ๋ ˆ์ด์•„์›ƒ ์ •๋ณด์™€ ์Šคํƒ€์ผ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค.
    // ํ™”๋ฉด์— ์—†๊ณ , ๊ณต๊ฐ„๋„ ์ฐจ์ง€ ์•Š๋Š” ์š”์†Œ๋Š” ๊ตฌ์ถ•X
  • Layout/Reflow ๋‹จ๊ณ„ : ๋ทฐํฌํŠธ ๊ธฐ๋ฐ˜ ๋ Œํ„ฐ ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๊ฐ–๋Š” ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
  • Paint ๋‹จ๊ณ„ : ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์— ํ”ฝ์…€๋กœ ๊ทธ๋ฆฌ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์‹ค์ œ๋กœ ํ™”๋ฉด์— ๋‚ด์šฉ์ด ํ‘œ์‹œ๋œ๋‹ค.

ํŒŒ์‹ฑ์€ ๋ฌธ์„œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•œ๋‹ค.