๋ธ๋ผ์ฐ์ ๋?
๋ธ๋ผ์ฐ์ ๋ ์ธํฐ๋ท ์์์ ์น ํ์ด์ง์ ์ ๊ทผ์ ํ๊ธฐ ์ํ ํ๋์ ์ํํธ์จ์ด๋ค.
<๋ค์ด๋ฒ, ๊ตฌ๊ธ, ๋ค์> ๋ฑ์ ์น ํ์ด์ง์ ์ ๊ทผํ๊ธฐ ์ํด <ํฌ๋กฌ, ์ฌํ๋ฆฌ, ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ>์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ ์ํด์ผ ํ๋ค.
๋ธ๋ผ์ฐ์ ์ฃผ์ ๊ธฐ๋ฅ
๋ธ๋ผ์ฐ์ ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ์ ํํ ์์์ ์๋ฒ์ ์์ฒญํ๊ณ ์๋ต ๋ฐ์ ์์์ ๋ธ๋ผ์ฐ์ ์ ํ์(๋ ๋๋ง)ํ๋ ๊ฒ์ด๋ค.
์์์ ๋ณดํต HTML ๋ฌธ์์ง๋ง PDF, ์ด๋ฏธ์ง์ฒ๋ผ ๋ค๋ฅธ ํํ์ผ ์ ์๋ค. ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ URL์ ์
๋ ฅ ํ ์น ์๋ฒ์ ์์ฒญํ๋ฉด, ์น ์๋ฒ์์ ์์์ ์๋ตํ๊ณ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ ์น ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ค.
๋ณดํต ๋ธ๋ผ์ฐ์ ์ ์น ์๋ฒ๋ ๋ค๋ฅธ ์ปดํจํฐ์ ์์นํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์น ์๋ฒ๊ฐ ์คํ์ค์ธ ์ปดํจํฐ์ ์ฃผ์๋ฅผ ์์์ผ ํ๋๋ฐ, ์ด ์ฃผ์๋ฅผ IP ์ฃผ์๋ผ๊ณ ํ๋ค.
IP ์ฃผ์๋ 192.168.0.1๊ณผ ๊ฐ์ ์ซ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์์ด ์ธ์ฐ๊ธฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ naver.com
, google.com
๊ณผ ๊ฐ์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ค. ์ด๋ IP ์ฃผ์์ ๋๋ฉ์ธ ์ฃผ์๋ฅผ ์๋ก ๋ณํํ ๋ ์ฐ์ด๋ ๊ฒ์ด DNS๋ค.
๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)
: ์ฃผ์์ฐฝ, ์ด์ /๋ค์ ๋ฒํผ, ๋ถ๋งํฌ ๋ฑ ์์ฒญํ ํ์ด์ง๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ชจ๋ ๋ถ๋ถ
- ๋ธ๋ผ์ฐ์ ์์ง
: ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ ๋๋ง ์์ง ์ฌ์ด์ ๋์ ์ ์ด
- ๋ ๋๋ง ์์ง
: ์์ฒญํ ์ฝํ
์ธ ํ์
- ํต์
: ๋คํธ์ํฌ ํธ์ถ(HTTP ์์ฒญ)์ ์ฌ์ฉ
- ์๋ฐ์คํฌ๋ฆฝํธ ํด์๊ธฐ
: ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ํด์ํ๊ณ ์คํ
- UI ๋ฐฑ์๋
: ์ฒดํฌ ๋ฐ์ค, ์ฝค๋ณด ๋ฐ์ค ๋ฑ ๊ธฐ๋ณธ์ ์ธ ์ฅ์น ๋ ๋๋ง
- ์๋ฃ ์ ์ฅ์
: ์ฟ ํค ์ ์ฅ๊ณผ ๊ฐ์ ์๋ฃ ์ ์ฅํ๋ ๊ณ์ธต. ์น ๋ฐ์ดํฐ๋ฒ ์ด์ค
๋ ๋๋ง ๋์ ๊ณผ์
์ ๊ทธ๋ฆผ์ ๋ ๋๋ง ์์ง์ ๊ธฐ๋ณธ์ ์ธ ๋์ ๊ณผ์ ์ด๋ค. ์นํท ์์ง ๊ธฐ์ค์ผ๋ก ์์ธํ ์์๋ณด๊ฒ ๋ค.
1. DOM(Document Object Model)๊ณผ CSSOM(CSS Object Model ์์ฑ, JS ํด์
- HTML๊ณผ CSS(Style Sheets) ๋ฌธ์๋ ๊ฐ๊ฐ Parser๋ฅผ ํตํด ํ์ฑ๋์ด ๊ฐ๊ฐ Object Model๋ก ๋ง๋ค์ด์ง๋ค. ๊ทธ๊ฒ์ด DOM๊ณผ CSSOM์ด๋ค.
- DOM ๊ตฌ์ถ์ ์ ์ง์ ์ผ๋ก ์งํ๋๋ค. ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ์ ์ฒด HTML์ด ํ์ฑ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ์ ์ง์ ์ผ๋ก ๋จผ์ ํํํ ์ ์๋ ์ผ๋ถ๋ฅผ ๋ ๋๋งํ๋ค.
- HTML ๋ฌธ์๋ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ต์ ๋จ์์ธ ํ ํฐ์ผ๋ก ๋ถํดํ ๋ค, ํ ํฐ ๋ด์ฉ์ ๋ฐ๋ผ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๊ฐ ๋
ธ๋๋ฅผ ์์ฑํ๋ค. ๋
ธ๋๋ค์ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ฑํ์ฌ DOM์ ์์ฑํ๋ค.
- HTML ๋ฌธ์๋ฅผ ํ์ค์ฉ ์์ฐจ์ ์ผ๋ก ํ์ฑํ์ฌ DOM์ ์์ฑํ๋ค๊ฐ, style ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ ์ ๋ฉ์ถ๊ณ CSSOM ์์ฑํ๋ ๊ณผ์ ์ ์งํํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ ์ ์ค๋จํ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํตํด ํ์ฑํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
2. Render Tree ๊ตฌ์ถ
- ์์ฑ๋ DOM๊ณผ CSSOM์ ํฉ์น๋ ๊ณผ์ (Attachment)์ ๊ฑฐ์น๋ฉด ๋ ๋ ํธ๋ฆฌ๋ฅผ ํ์ฑํ๋ค.
- DOM์ ๋ฃจํธ๋ถํฐ ๋ชจ๋ ํ์ํ๋ฉด์ ๋ธ๋ผ์ฐ์ ์ ํ์๋์ง ์๋ ์ผ๋ถ ๋
ธ๋๋ค(script, meta ํ๊ทธ ๋ฑ)๊ณผ
display:none
๊ฐ์ ์์ฑ์ด ์๋ ๋
ธ๋๋ค์ ๋ ๋ ํธ๋ฆฌ์์ ์ ์ธ๋๋ค.
- ๋ธ๋ผ์ฐ์ ์ ํ์๋๋ ๊ฐ ๋
ธ๋์ ๋ง๋ CSSOM ๊ท์น์ ์ฐพ์ ์ ์ฉํ๊ณ ์ฝํ
์ธ ๋ฐ ๊ณ์ฐ๋ ์คํ์ผ๊ณผ ํจ๊ป ๋ ๋ ํธ๋ฆฌ๋ก ์์ฑ๋๋ค.
3. Layout ๋ฐฐ์น
- ๋ ๋ ํธ๋ฆฌ๊ฐ ์์ฑ๋ ํ, ๋ทฐํฌํธ์ ์ ํํ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ์๋ ๋จ์(vh, vw, %, rem ...)๊ฐ ์ ๋ ๋จ์์ธ px๋ก ๋ณํํ๋ค.
4. Render Tree ๊ทธ๋ฆฌ๊ธฐ
- ๋ ๋ ํธ๋ฆฌ์ ๊ฐ ๋
ธ๋๋ค์ ๋ธ๋ผ์ฐ์ ์ ํ์ํ ๋
painting
๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ ํ๋ฉด์ UI๊ฐ ๋ํ๋๊ฒ ๋๋ค.
์น ์ฑ๋ฅ ์ต์ ํ
- ํต์ ์ ํตํด ์๋ต ๋ฐ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ(๋ฐ์ดํธ ์) ์ต์ํํ๊ธฐ
- ์ค์ํ ์์(๋ฆฌ์์ค)์ ๊ฐ์ ์ค์ด๊ธฐ
- CRP(Critical Rendering Path)์ ๊ธธ์ด ์ค์ด๊ธฐ
CRP์ ๊ธธ์ด๋?
์น ์๋ฒ๋ก๋ถํฐ ์ค์ํ ์์์ ์๋ต ๋ฐ๊ธฐ ์ํด ์๋ณตํด์ผํ๋ ํ์
- ์ต์ํ, ์์ถ, ์บ์ฑ
: HTML, CSS, JS
- css๋ ๋ ๋๋ง ์งํ์ ๋ฐฉํดํ๋ค. ๋ ๋๋ง์ ๋ง์ง ์๋๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ์?
: inline style sheet ๋๋ ๋ฏธ๋์ด ์ฟผ๋ฆฌ ์ฌ์ฉ
- js๋ html ๋ฌธ์ ํ์ฑ์ ๋ฐฉํดํ๋ค. ํ์ฑ์ ๋ง์ง ์๋๋ก ํ ์ ์๋ ๋ฐฉ๋ฒ์?
: js ์คํ ๋ณด๋ฅ. defer
์์ฑ ๋๋ async
์์ฑ ์ฌ์ฉ
์ฐธ๊ณ
๋ธ๋ผ์ฐ์ ๋ ์ด๋ป๊ฒ ๋์ํ๋๊ฐ?_NaverD2
์น ๋ธ๋ผ์ฐ์ ์ ๋์์๋ฆฌ๋ฅผ ์์๋ณด์_thyoondev๋
[IT ๊ธฐ์ ] ์น๋ธ๋ผ์ฐ์ ๋์์๋ฆฌ_๊ฐ๋ฐ ๊น๋ง๊ท๋
Web Performance Optimization_Udacity ์ ํ๋ธ