๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์›๋ฆฌ ( Critical Rendering Path )

๋ Œ๋”๋ง์ด๋ž€ ์›น์‚ฌ์ดํŠธ์— url๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ( HTML,CSS, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ) ๋“ฑ์˜ ์‘๋‹ต์„ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค

 

 

๋ธŒ๋ผ์šฐ์ € ์—”์ง„

 ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ Œ๋”๋ง ์—”์ง„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

 

๋ธŒ๋ผ์šฐ์ €  ์—”์ง„
ํŒŒ์ด์–ด ํญ์Šค ๊ฒŒ์ฝ” ์—”์ง„
์‚ฌํŒŒ๋ฆฌ, ํฌ๋กฌ  ์›นํ‚ท ์—”์ง„

 

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง (Critical Rendering Path) ๊ณผ์ •

 

Critical Rendering Path(CRP)๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ์‘๋‹ต์„ ๋ฐ›์•„ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

  1. DOM ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ
  2. CSSOM ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ
  3. Render ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ
  4. ๋ ˆ์ด์•„์›ƒ ์ƒ์„ฑํ•˜๊ธฐ
  5. ํŽ˜์ธํŒ…

์ด์ œ ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž 

 

DOM ํŠธ๋ฆฌ ์ƒ์„ฑ

 

HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ ํ•˜์—ฌ DOM(Document Object Model) ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.

 

https://bit.ly/2WochoN

 

๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ๋ฌธ์„œ๋ฅผ ๋ชจ๋‘ ์ „๋‹ฌ๋ฐ›๊ณ  HTML ํŒŒ์„œ๋ฅผ ํ†ตํ•˜์—ฌ ํŒŒ์‹ฑ(parsing)ํ•˜๊ณ  ํŒŒ์‹ฑ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,

์ƒ์„ฑ๋œ ํŒŒ์‹ฑ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ DOM (Document Object Model) ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค .

 

CSSOM ํŠธ๋ฆฌ ์ƒ์„ฑ

https://bit.ly/2WxQefH

 

CSSํŒŒ์ผ์€ CSSํŒŒ์„œ์— ์˜ํ•ด ํŒŒ์‹ฑ ๋˜์–ด CSSOMํŠธ๋ฆฌ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

 

 

ํŒŒ์‹ฑ(parse or parsing)
๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
ํŒŒ์‹ฑ ๊ฒฐ๊ณผ๋Š” ๋ณดํ†ต ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ ํŠธ๋ฆฌ์ธ๋ฐ ํŒŒ์‹ฑ ํŠธ๋ฆฌ ๋˜๋Š” ๋ฌธ๋ฒ• ํŠธ๋ฆฌ ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

 

 

๋ Œ๋” ํŠธ๋ฆฌ (DOM + CSSOM) ์ƒ์„ฑ 

 

 

https://bit.ly/3iQ3ovQ

 

DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด, ์ด ๋‘˜์„ ๊ฒฐํ•ฉํ•ด์„œ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ํŠธ๋ฆฌ์—๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋…ธ๋“œ๋งŒ ํฌํ•จ๋œ๋‹ค. 

 

<head>display:'none' ์™€ ๊ฐ™์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋Š” DOM ์š”์†Œ๋Š” ๋ Œ๋” ํŠธ๋ฆฌ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š๋Š”๋‹ค. 

 

๋ ˆ์ด์•„์›ƒ  ( Layout )

 

https://bit.ly/3xdGFyN


๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์—์„œ๋Š” ๋ทฐํฌํŠธ ๋‚ด์—์„œ ๊ฐ ์š”์†Œ๋“ค์—๊ฒŒ ์œ„์น˜(position)์™€ ํฌ๊ธฐ(size)๋ฅผ ๊ฒฐ์ •ํ•ด์ค€๋‹ค. 

Viewport
๊ทธ๋ž˜ํ”ฝ์ด ํ‘œ์‹œ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์˜์—ญ, ํฌ๊ธฐ ๋ทฐํฌํŠธ๋Š” ๋ชจ๋ฐ”์ผ์˜ ๊ฒฝ์šฐ ๋””์Šคํ”Œ๋ ˆ์ด์˜ ํฌ๊ธฐ, pc์˜ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

 

Paint ๋‹จ๊ณ„ 

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๋ Œ๋”๋ง ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ ํ™”๋ฉด์˜ ์‹ค์ œ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์—์„œ ๋ชจ๋“  ์œ„์น˜์™€ ํฌ๊ธฐ์— ๋Œ€ํ•œ ๊ณ„์‚ฐ์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด, ํ™”๋ฉด์— ์š”์†Œ๋“ค์„ ๊ทธ๋ฆฌ๊ฒŒ ( Painting ) ๋œ๋‹ค.

 

 


 

HTMLํŒŒ์„œ๊ฐ€ <script> ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด?

 

์ง€๊ธˆ๊นŒ์ง€ ์„ค๋ช…์œผ๋กœ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑ ํ•˜์—ฌ HTML๊ณผ CSS๋ฅผ ๋ Œ๋”๋ง ์—”์ง„์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ,

์œ„ ๊ณผ์ •๊นŒ์ง€ ๋งŒ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์€ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ Javascript๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š”์ง€ ์•Œ์•„ ๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค


์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ฒ˜๋ฆฌํ•œ๋‹ค HTML ํŒŒ์„œ๋Š” <script> ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด Javascript ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด DOM ์ƒ์„ฑ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ๊ถŒํ•œ์„ ๋„˜๊ธฐ๊ฒŒ๋œ๋‹ค.

 

์ œ์–ด ๊ถŒํ•œ์„ ๋„˜๊ฒจ๋ฐ›์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ <script> ํƒœ๊ทธ ๋‚ด์˜ Javascript ์ฝ”๋“œ ๋˜๋Š” src ์†์„ฑ์— ์ •์˜๋œ Javascript ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๊ณ  ํŒŒ์‹ฑ ํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค. 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์‹œ HTMLํŒŒ์„œ๋กœ ๊ถŒํ•œ์„ ๋„˜๊ธฐ๊ณ  ์ค‘์ง€ํ–ˆ๋˜ ์‹œ์  ๋ถ€ํ„ฐ ๋‹ค์‹œ DOM ์ƒ์„ฑ์„ ์žฌ๊ฐœ ํ•˜๊ฒŒ๋œ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ๋™๊ธฐ์ ์œผ๋กœ HTML, CSS, Javascript๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋Š” <script>ํƒœ๊ทธ์˜ ์œ„์น˜์— ๋”ฐ๋ผ DOM์ƒ์„ฑ์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋‹ค๋Š”

๋œป์ด๋‹ค.

 

๋ณดํ†ต <body>์š”์†Œ์˜ ๊ฐ€์žฅ ์•„๋ž˜์— <script>ํƒœ๊ทธ๋ฅผ ์œ„์น˜ํ•˜๋Š”๊ฒŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

์ฒซ๋ฒˆ์งธ๋Š” HTML ์š”์†Œ๋“ค์˜ ๋ Œ๋”๋ง์ด ์ง€์—ฐ๋˜๋Š” ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ™”๋ฉด์˜ ๋กœ๋”ฉ์‹œ๊ฐ„์ด ์ค„๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋” ์ข‹์€ ๊ฒฝํ—˜์„ ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ๋‘๋ฒˆ์งธ๋Š” DOM์ด ์™„์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ DOM์„ ์กฐ์ž‘ ํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 


 

Reperence

- https://medium.com/%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%9D%98%ED%92%88%EA%B2%A9/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%9D%98-%EB%A0%8C%EB%8D%94%EB%A7%81-%EA%B3%BC%EC%A0%95-5c01c4158ce

 

https://velog.io/@gay0ung/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EB%A0%8C%EB%8D%94%EB%A7%81-%EC%9B%90%EB%A6%AC

https://bbangson.tistory.com/87