๐ท DOM + CSSOM
๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง๋ฅผ ๋ ๋๋ง ํ๋ ค๋ฉด DOM๊ณผ CSSOM ํธ๋ฆฌ๋ฅผ ์์ฑํด์ผ ํ๋ค. ์ฑ๋ฅ์ด ์ข์ ์นํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ต๋ํ ๋นจ๋ฆฌ HTML, CSS๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์ ๊ณตํด์ค์ผ ํ๋ค.
์์ฑํ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ ์ ์๊ฒ ๋ณํ๋๋๋ฐ, HTML -> DOM // CSS -> CSSOM์ผ๋ก ๋ณํ๋๋ค.
HTML๋ก ๋งํฌ์ ๋ ์ฝ๋๊ฐ DOM์ผ๋ก ๋ณํ๋๊ธฐ ๊น์ง ์๋์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="style.css" rel="stylesheet">
<title>Critical Path</title>
</head>
<body>
<p>Hello <span>web performance</span> students!</p>
<div><img src="awesome-photo.jpg"></div>
</body>
</html>
1. Bytes
๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ์์ ๋ฐ์ดํธ๋ฅผ ์ฝ์ด์์ ํด๋น ํ์ผ์ ๋ํด ์ง์ ๋ ์ธ์ฝ๋ฉ์ ๋ฐ๋ผ ๊ฐ๋ณ ๋ฌธ์๋ก ๋ณํํ๋ค.
2. ํ ํฐํ
๋ธ๋ผ์ฐ์ ๊ฐ ๋ฌธ์์ด์ ์น ํ์ค์ ์ง์ ๋ ๊ณ ์ ํ ํฐ์ผ๋ก ๋ณํํ๋ค.
3. ๋ ์ฑ
ํ ํฐ์ ํด๋น ์์ฑ ๋ฐ ๊ท์น์ ์ ์ํ๋ ๊ฐ์ฒด๋ก ๋ณํ๋จ.
4. DOM TREE ์์ฑ
๋งํฌ์ ์ ์ ์๋ ์-ํ ๊ด๊ณ๋ฅผ ๊ตฌ์กฐํํ ๋ ํธ๋ฆฌ๊ฐ ํ์ฑ๋๋ค. ๋ ํธ๋ฆฌ์ ์ต์ข ์ผ๋ก ์ถ๋ ฅ๋ ๋ด์ฉ์ ๊ฐ์ง๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ํ ๋ ์ฌ์ฉํ๋ค.
์์ ๊ฐ์ ๊ณผ์ ์ CSSOM์ ํ์ฑํ๋๋ฐ๋ ๋๊ฐ์ด ์งํํ๋ค. CSS๋ ํํฅ์ ๊ท์น์ ๊ฐ์ง๋ค. ์์ ์์์ ์คํ์ผ์ ์ค๋ ํ์ ์์์์ ๋ ์ธ๋ถํ๋ ์คํ์ผ์ ์ง์ ํ๋ฉด ์์ ์คํ์ผ ์์ฑ์ด ์ ์ฉ๋์ง ์๋๋ค.
๐ท Render - Tree
DOM๊ณผ CSSOM์ด ๊ฒฐํฉํ์ฌ ๋ ๋๋ง ํธ๋ฆฌ๋ฅผ ํ์ฑํ๋ค.
๋ ๋ ํธ๋ฆฌ๊ฐ ํ์ฑ๋๋ฉด, ์๋์ ๊ฐ์ ๋์์ด ์ฐ์ด์ด ์ผ์ด๋๊ณ ์ฐ๋ฆฌ๊ฐ ํ์ด์ง๋ฅผ ๋ณผ ์ ์๊ฒ ํ๋ฉด์ ์ถ๋ ฅํด์ค๋ค.
๋ ๋ํธ๋ฆฌ๊ฐ ์์ฑ๋๋ฉด, layout ๋จ๊ณ๊ฐ ์งํ๋๋๋ฐ, ๊ธฐ๊ธฐ์ ๋ทฐํฌํธ ๋ด์์ ๋ ธ๋์ ์ ํํ ์์น์ ํฌ๊ธฐ๋ฅผ ์บก์ฒํ๋ '์์ ๋ชจ๋ธ'์ด ์์ฑ๋๋ค. ๋ชจ๋ ์๋์ ์ธ ์ธก์ ๊ฐ์ ํ๋ฉด์์ ์ ๋์ ์ธ ํฝ์ ๋ก ๋ณํ๋์ด ๋ฐฐ์น๋๋ค.
๋ ์ด์์ ๋จ๊ณ๊ฐ ์๋ฃ๋๋ฉด, ๋ ๋๋ง ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋๋ฅผ ํ๋ฉด์ ์ค์ ํฝ์ ๋ก ๋ณํํ๋ paint ๋จ๊ณ๊ฐ ์งํ๋๋ค.
DOM ๋๋ CSSOM์ด ์์ ๋๋ฉด, ํ๋ฉด์ ๋ค์ ๋ ๋๋ง ํ ํ์๊ฐ ์๋ ํฝ์ ์ ํ์ ํ๊ธฐ ์ํด ์์ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ค์ ๋ฐ๋ณตํด์ผ ํ๋ค. ๊ฐ๋จํ ์นํ์ด์ง์ผ ๊ฒฝ์ฐ ํฌ๊ฒ ์๊ด์ด ์์ ์ ๋ ์์ง๋ง, ๋์ ์์๊ฐ ๋ง์ด ๋ค์ด๊ฐ ์น์ด๋ ๋งค์ฐ ๊ธด ์ฝ๋๋ฅผ ์ฌ์ฉ ํ๋ ์นํ์ด์ง์์ ์์ ๋ ๋๋ง๋ค layout -> paint -> composition์ด ์ผ์ด๋๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ํ์ ์ฒํ๋ค.
๊ทธ๋์ js์์ css์์ ์ ์ํด ๋์ ์์๋ฅผ ์ถ๊ฐํ ๋ ์ต๋ํ ํจ์จ์ ์ธ css ์์ฑ์ ์ฌ์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ ์ข๋ค.
CSS Triggers
@PROPERTY_DESCRIPTION@ B G W E Change from default B G W E Subsequent updates
csstriggers.com
์ ์ฌ์ดํธ์์๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋จ๊ณ๋ณ๋ก ๋ฐ์์ด ์ผ์ด๋๋์ง ์ ์ผ์ด๋๋์ง๋ฅผ ์ ์ ์๋ค. ๋ณด๋ค ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
์ฐธ๊ณ ์ฌ์ดํธ) https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction
๋ ๋๋ง ํธ๋ฆฌ ์์ฑ, ๋ ์ด์์ ๋ฐ ํ์ธํธ | Web | Google Developers
TODO
developers.google.com
'Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ๊ฐ์ฒด ์ ๊ทผ๋ฐฉ์ & ES6 ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ ๋ฌธ๋ฒ (0) | 2022.09.15 |
---|---|
[JS] Fetch API(1) (0) | 2022.06.16 |
[JS] ๋๊ธฐ(Synchronous), ๋น๋๊ธฐ(Asynchronous) ํ๋ก๊ทธ๋๋ฐ(+Promise) (2) | 2021.12.03 |
[JS] ์๋ฐ์คํฌ๋ฆฝํธ ๋์์๋ฆฌ (0) | 2021.12.02 |
[JS] Hoisting ์ด๋? (2) | 2021.10.11 |