๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’๊ณต๋ถ€/ํฐ ๋ฐœ๊ฒฌ

๋ธŒ๋ผ์šฐ์ €์˜ ์ž‘๋™ ์›๋ฆฌ

by rindev 2021. 8. 13.

๐Ÿ™‹‍โ™€๏ธ๋ชฉ์ฐจ

๋ธŒ๋ผ์šฐ์ €์— ๊ด€ํ•˜์—ฌ

๋ Œ๋”๋ง ์—”์ง„

UI๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ƒํ™ฉ


๐Ÿ’ป๋ธŒ๋ผ์šฐ์ €์— ๊ด€ํ•˜์—ฌ

โœ…๋ธŒ๋ผ์šฐ์ €

  • ์›น ์„œ๋ฒ„์—์„œ ์Œ๋ฐฉํ–ฅ ํ†ต์‹ ํ•˜๋Š” HTML๋ฌธ์„œ๋‚˜ ํŒŒ์ผ๊ณผ ์—ฐ๋™ํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์˜ ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด
  • ์›น์„œ๋ฒ„์— ์›นํŽ˜์ด์ง€ ์š”์ฒญ → ์›น ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์Œ → ์‘๋‹ต(HTML๋ฌธ์„œ ๋“ฑ)์„ ์ฝ์–ด์„œ ํ•ด์„ → ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์คŒ
  • ๊ตฌ๊ธ€ ํฌ๋กฌ, ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ, ๋ชจ์งˆ๋ผ ํŒŒ์ด์–ดํญ์Šค ๋“ฑ์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ

โœ…๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์„ฑ

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://d2.naver.com/helloworld/59361

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

 


 

๐Ÿ’ป๋ Œ๋”๋ง ์—”์ง„

โœ…๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ๋‹ค๋ฅธ ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉ

  • ์‚ฌํŒŒ๋ฆฌ → Webkit
  • ํŒŒ์ด์–ดํญ์Šค → Gecko
  • ํฌ๋กฌ → Blink (Webkit์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ 2014๋…„์— ๋ณ€๊ฒฝ)

โœ…๋ Œ๋”๋ง ์—”์ง„์˜ ๋ชฉํ‘œ

  • HTML, CSS, JS, ์ด๋ฏธ์ง€ ๋“ฑ ์›น ํŽ˜์ด์ง€์— ํฌํ•จ๋œ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ™”๋ฉด์— ๋ณด์—ฌ์ฃผ๊ธฐ
  • ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋ง์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ

โœ…๋ Œ๋”๋ง ์—”์ง„์˜ ๋™์ž‘ ๊ณผ์ •

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://d2.naver.com/helloworld/59361

1. DOM ํŠธ๋ฆฌ ์ƒ์„ฑ, CSSOM ํŠธ๋ฆฌ ์ƒ์„ฑ

2. ๋ Œ๋” ํŠธ๋ฆฌ ๊ตฌ์ถ•

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://cresumerjang.github.io/2019/06/24/critical-rendering-path/

  • ๋ Œ๋” ํŠธ๋ฆฌ : ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์–ด์•ผ ํ•  ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ปจํ…์ธ , ์Šคํƒ€์ผ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ(DOMํŠธ๋ฆฌ + CSSOMํŠธ๋ฆฌ)
  • metaํƒœ๊ทธ, display: none; ๋“ฑ ๋ Œ๋”์™€ ๊ด€๊ณ„ ์—†๋Š” ์ •๋ณด๋Š” ์ œ์™ธํ•จ

3. ๋ Œ๋” ํŠธ๋ฆฌ ๋ฐฐ์น˜ (Layout, Reflow)

  • ๋ทฐํฌํŠธ ๋‚ด์—์„œ ์š”์†Œ๋“ค์˜ ์ •ํ™•ํ•œ ์œ„์น˜, ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋‹จ๊ณ„
  • CSS์—์„œ %๋‚˜ em ๋“ฑ ์ƒ๋Œ€์ ์ธ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ ๋ทฐํฌํŠธ์— ๋งž์ถฐ px๋กœ ๋ณ€ํ™˜

4. ๋ Œ๋” ํŠธ๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ (Paint, Repaint)

 


 

๐Ÿ’ปUI๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ƒํ™ฉ

โœ…UI ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค

์‚ฌ์šฉ์ž๋™์ž‘ ๋“ฑ์œผ๋กœ JS๊ฐ€ ์‹คํ–‰๋˜์–ด CSS๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์‹คํ–‰ ๋œ ๊ฒฝ์šฐ ์•„๋ž˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์ณ ํ™”๋ฉด์ด ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://cresumerjang.github.io/2019/06/24/critical-rendering-path/

  • JavaScript
    • JQuery์˜ animateํ•จ์ˆ˜, ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ ์ •๋ ฌ, ํŽ˜์ด์ง€์— DOM ์š”์†Œ ์ถ”๊ฐ€ ๋“ฑ ์‹œ๊ฐ์  ๋ณ€ํ™”๋ฅผ ์ผ์œผํ‚ค๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ
    • CSS Animations, Transitions ๋ฐ Web Animations API๋„ ์‚ฌ์šฉ ๋จ
  • Style
    • ๋งค์นญ ์„ ํƒ๊ธฐ์— ๋”ฐ๋ผ ์–ด๋–ค CSS ๊ทœ์น™์„ ์–ด๋–ค ์š”์†Œ์— ์ ์šฉํ•  ์ง€ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • Layout
    • ์š”์†Œ๊ฐ€ ํ™”๋ฉด์—์„œ ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„ ๋ฐ ๋ฐฐ์น˜ ๋˜๋Š” ์œ„์น˜๋ฅผ ๊ณ„์‚ฐ
    • ๋‹ค๋ฅธ ์š”์†Œ์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ๋ธŒ๋ผ์šฐ์ €์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋‹จ๊ณ„
  • Paint
    • ํ”ฝ์…€์„ ์ฑ„์šฐ๋Š” ํ”„๋กœ์„ธ์Šค
    • ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ, ์ƒ‰์ƒ, ๊ทธ๋ฆผ์ž ๋“ฑ์„ ๊ทธ๋ฆฌ๋Š” ์ž‘์—…
  • Composite
    • paint ํ•  ์˜์—ญ์„ layer๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ, ์ด๋ฅผ ํ•˜๋‚˜์˜ ๋น„ํŠธ๋งต์œผ๋กœ ํ•ฉ์„ฑํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์™„์„ฑํ•จ

 

โœ…UI ์—…๋ฐ์ดํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

1. Layout๋ถ€ํ„ฐ ์žฌ์‹คํ–‰

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://cresumerjang.github.io/2019/06/24/critical-rendering-path/

์˜ˆ๋ฅผ๋“ค์–ด CSS์˜ left ์†์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์žˆ์œผ๋ฉด, ์ด๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ•œ ํ”„๋ ˆ์ž„ ๋งˆ๋‹ค

์œ„์น˜๋ž‘ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐ(Layout) → ์ƒˆ๋กœ ํ™”๋ฉด์„ ๊ทธ๋ฆผ(Paint) → ๋‹ค์‹œ ํ•ฉ์„ฑ(Composite)ํ•˜๋Š” ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•œ๋‹ค

 

2. Paint๋ถ€ํ„ฐ ์žฌ์‹คํ–‰

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : https://cresumerjang.github.io/2019/06/24/critical-rendering-path/

ํŽ˜์ด์ง€์˜ ๋ ˆ์ด์•„์›ƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€(ํ˜น์€ ์ƒ‰์ƒ), ํ…์ŠคํŠธ์˜ ์ƒ‰์ƒ, ๊ทธ๋ฆผ์ž ๋“ฑ์„ ๋ณ€๊ฒฝํ•˜๋ฉด

Paint๋ฅผ ์‹คํ–‰ ํ›„ Composite๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

3. Composite๋งŒ ์žฌ์‹คํ–‰

์ด๋Š” ๊ฒ‰์œผ๋กœ ๋ณด๊ธฐ์—๋Š” 1๋ฒˆ์˜ left์™€ ๊ฐ™์€ ๋™์ž‘์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ตํ•ด์„œ ๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!

transform์€ Composite ๋‹จ๊ณ„๋งŒ ๊ฑฐ์น˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ์ ๊ฒŒ ๋“ค์–ด ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•˜๋‹ค.

 

 

๐Ÿ˜Š๊ฒฐ๋ก  : ๊ฐ™์€ ๋™์ž‘์„ ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋ผ๋ฉด ๋‹จ๊ณ„๋ฅผ ๋œ ๊ฑฐ์น˜๋Š” ์†์„ฑ์„ ์„ ํƒํ•˜๋„๋ก ํ•˜์ž!

์—ฌ๊ธฐ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅ! → https://csstriggers.com/

 

 

๐Ÿ‘€์ฐธ๊ณ  (๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค)

๋”๋ณด๊ธฐ

https://youtu.be/sJ14cWjrNis

https://d2.naver.com/helloworld/59361

https://poiemaweb.com/js-browser

 

Javascript Environment | PoiemaWeb

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์šด์˜์ฒด์ œ(Operating System, OS) ์œ„์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ HTML, CSS์™€ ํ•จ๊ป˜ ์‹คํ–‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•  ๋•Œ ๋ณด๋‹ค

poiemaweb.com

https://cresumerjang.github.io/2019/06/24/critical-rendering-path/

 

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง ํ”„๋กœ์„ธ์Šค

์›น ๊ฐœ๋ฐœ์ด ์ฆ๊ฑฐ์šด ๊ฐœ๋ฐœ์ž์˜ ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ

cresumerjang.github.io

https://velog.io/@glm777/%EC%9B%B9-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EC%9E%91%EB%8F%99-%EA%B5%AC%EC%A1%B0-%EB%B0%B1%EC%82%B0%EC%9D%98-%EA%B8%B0%EC%88%A0-%EB%B8%94%EB%A1%9C%EA%B7%B8

 

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ์ž‘๋™ ๊ตฌ์กฐ

์ด๊ธ€์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €๋Š” ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”๊ฐ€? ์™€ ์›น์‚ฌ์ดํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ ๊นŒ? ๊ธ€์˜ ๋‚ด์šฉ์„ ์ธ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›”๋“œ์™€์ด๋“œ์›น(www)๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด ๊ฐ€์žฅ ํ•„์ˆ˜์ ์ธ

velog.io

 

๋Œ“๊ธ€