[CS] ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์›๋ฆฌ
elice/study

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

๋ Œ๋”๋ง์ด๋ž€ HTML, CSS, JavaScript ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅ๋˜๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

 

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ์š”์†Œ๋ฅผ ๋ Œ๋”๋ง ํ•  ๋•Œ, ์›นํ‚ท(Webkit)์ด๋‚˜ ๊ฒŒ์ฝ”(Gecko) ๋“ฑ๊ณผ ๊ฐ™์€ ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๋ Œ๋”๋ง ์—”์ง„์ด HTML, CSS, JavaScript๋กœ ๋ Œ๋”๋งํ•  ๋•Œ CRP(Critical Rendering Path) ๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋‹ค์Œ ๋‹จ๊ณ„๋“ค๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

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

 

์ถœ์ฒ˜: https://bitsofco.de/understanding-the-critical-rendering-path/

 

 

 

์ฐธ๊ณ 

https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/browser-rendering.md