๋ฐฐ๋ฌ์ ๋ฏผ์กฑ์ผ๋ก ์ ๋ช ํ ์ฐ์ํ ํ์ ๋ค์์ ํ์์ ํ์ฌ ์ฐ์ํ ํ์ ๋ค ํค์น์์ ์ธ๋ฏธ๋๊ฐ ์งํ๋์๋ค. ํ์ฌ ์ฅ์๊ฐ ์์ด ํธ์ ์ฃผ๋ณ์ด์๋๋ฐ, ๋ฐ๋ก ์์ ๋กฏ๋ฐ์๋๊ฐ ์์ด์ ํ 10์ฌ๋ ๋ง์ ๋ฉ๋ฆฌ์๋๋ง ๋กฏ๋ฐ์๋๋ฅผ ๋ณผ ์ ์์๋ค.
์ฅ์ ์ฐพ๊ธฐ๊ฐ ํ๋ค์ด์ ์ฐ์ฐ์ฐฎ๊ฒ ์ฐ์ํ ํ์ ๋ค ์ฌ๋ฌด์ค๊น์ง ๊ฐ๋ณด๊ฒ ๋์๋๋ฐ ์ฌ๊ธฐ์ ๊ธฐ ์ผ์ค์๋ ๋ฌธ๊ตฌ๋ค์ด ๋์ ๋์๊ณ , ๊ทผ๋ฌดํ๊ฒฝ์ด ๋งค์ฐ ์ข์๋ณด์๋ค. ์ฐ์ํ ํ์ ๋ค ํค์น์ ์ ๊ฑด๋ฌผ ์งํ์ ์์นํด ์์๊ณ , ์ง์๋ค์ด ์์ฌ๋ฅผ ํ๋ ์๋น์ด์๋ค. ๊นํ ๊ฐ์ ๋๋์ผ๋ก ์ ๊พธ๋ฉฐ์ ธ ์์๊ณ , ์ง์๋ค์ ๋ณต์ง์ ์ ๊ฒฝ์ ๋ง์ด ์ฐ๋ ์ง ๋คํธ ๊ธฐ๊ณ์ ์ปคํผ ๋จธ์ ์ด ๋์ฌ์ ธ์์๋ค.
์ด๋ฒ ์ธ๋ฏธ๋์ ์ฃผ์ ๋ ์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ฉด์ ์ฑ๋ฅ ์ต์ ํ์ ๊ด๋ จ๋ ๋ด์ฉ๋ค์ด์๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ฐธ์ํ์ฌ ์ข์์ด ๊ฑฐ์ ๊ฐ๋ ์ฐผ์๋ค. ์์ด์ปจ์ด ์์ฒญ ๋นต๋นตํ๊ฒ ํ์ด์ ธ์์๋๋ฐ ํํ ์์ด์ปจ ๋ฐ๋ก ์๋์ ์์์ 1์๊ฐ ๋์ ๋จ๋ฉด์ ๊ฐ์ฐ์ ๋ค์๋ค. ์์ง๋ ๋ํต์ดโฆ
CPU์ GPU
์์ฉํ๋ก๊ทธ๋จ์ ์คํ ์ฑ๋ฅ์ ์ฃผ์ ๊ธฐ๋ฅ์ ์ํํ๋ ์๊ฐ๊ณผ ๊ทธ๋ํฝ ์ถ๋ ฅ ์๊ฐ์ผ๋ก ๊ฒฐ์ ๋๋ค. ์ด ์์ ๋ค์ CPU ํผ์์ ๋ด๋นํ๊ฒ ๋๋ฉด ์์ ๋์ ๋ฐ๋ผ ์์์ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๊ณ , ๊ทธ๋งํผ ๋ค๋ฅธ ์์ ๋ค์ block ๋ ์๊ฐ ์๋ค. ๋๊ตฐ๋ค๋ ๊ทธ๋ํฝ ์ถ๋ ฅ์๋ ๋ง์ ์์์ด ํ์ํ๋ค. ์ฃผ๋ฐฉ์ ์๋ก ๋ค๋ฉด ์ง๋ฐฐ์ธ, ์๋น, ์ฃผ๋ฐฉ์ฅ์ ์ญํ ์ ํผ์์ ๋ด๋นํ๊ฒ ๋๋ฉด ๊ทธ๋งํผ ์ฃผ๋ฌธ์ด ๋ฐ๋ฆฌ๊ฒ ๋ ๊ฒ์ด๊ณ , ์๋์ ๊ณ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋๋ค. ์ญํ ์ ๋ถ๋ดํ๊ฒ ๋๋ฉด ์ง๋ฐฐ์ธ์ ์ฃผ๋ฌธ์ ๋ฐ์ ์ฃผ๋ฐฉ์ ์๋ฆฌ๊ธฐ๋ง ํ๋ฉด ๋๊ณ , ์ฃผ๋ฐฉ์์๋ ์ ๋ฌ๋ฐ์ ๋ฉ๋ด์ ๋ํด ์๋ฆฌ์๋ง ์ ๋ ํ๋ฉด ๋๋ฏ๋ก ์์ ์ ํจ์จ์ ์ผ๋ก ์งํํ ์๊ฐ ์๋ค. ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก CPU์์ ํ๋ฉด์ ์ด๋ป๊ฒ ๊ทธ๋ฆด ๊ฒ์ธ์ง๋ฅผ ํ๋จํ ํ์ GPU์ ์ด ์์ ์ ์์ํ๋ฉด ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์์ ์ GPU๊ฐ ์ ๋ดํ์ฌ ๊ทธ๋งํผ CPU๊ฐ ๋ฐ๋ ๋ถ๋ด์ ๋์ด์ค ์๊ฐ ์๋ค.
CPU์ GPU๋ ์ ํ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๋๋ฐ, CPU๋ Main Memory๋ฅผ, GPU๋ Video Memory๋ฅผ ์ฌ์ฉํ๋ค. CPU๊ฐ Main Memory๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ป๊ฒ ๊ทธ๋ฆด ๊ฒ์ธ์ง๋ฅผ ํ๋จํ๋ฉด ์ด ์ ๋ณด๋ฅผ GPU์๊ฒ ์ ๋ฌํด์ผ ํ๋๋ฐ ์ด ๋ ์ ๋ฌํด์ฃผ๋ ์ญํ ์ BUS๊ฐ ๋ด๋นํ๋ค. BUS๋ฅผ ํตํด CPU๋ก ๋ถํฐ ๋ช ๋ น์ ๋ฐ์ GPU๋ Video Memory๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํ๊ฒ ๋๋ค.
CPU๊ฐ ์๋ ค์ฃผ์ง ์์ผ๋ฉด GPU๋ ๊ทธ๋ฆด ์ ๋ณด์ ๋ํด ์ ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก, ๊ทธ๋ ค์ผ ํ๋ ์ ๋ณด๊ฐ ์์ ๋๋ฉด ๋ฐ๋์ CPU๋ BUS๋ฅผ ํตํด GPU์๊ฒ ์๋ ค์ผํ๋๋ฐ, ์ด BUS์ ์ ์ก ์๋๊ฐ CPU์ GPU์ ์ฐ์ฐ์๋๋ณด๋ค ํ์ ํ๊ฒ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ณ๋ชฉ๊ตฌ๊ฐ์ด ๋ ์ ์๋ค. (CPU์ GPU๊ฐ์ ๋ฐ์ดํฐ ์ ์ก ์๊ฐ์ โ๋ฐ์ดํฐ์ ํฌ๊ธฐ / BUS ์๋โ๋ก ๊ฒฐ์ ) ๊ทธ๋ฌ๋ฏ๋ก ๊ทธ๋ ค์ผํ๋ ์ ๋ณด๊ฐ ์์ฃผ ๋ณ๊ฒฝ์ด ๋๋ค๋ฉด ๊ทธ ๋๋ง๋ค CPU๊ฐ GPU์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝํ ๋ถ๋ถ์ ์ต์ํ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ํ, Main Memory์ Video Memory๋ ๋ชจ๋ ํ๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ธฐ์กด์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋์ด ์๋ ๊ฒ๋ค์ ํด์ ํ๊ณ , ์ถ๊ฐ ์์ ์ ์ํ ๊ณต๊ฐ์ ํ ๋นํด์ผ ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ํ๊ณ๋ก ์ธํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์๊ฐ ์๋ค.
GPU์์ ์ผ์ด๋๋ ์ผ๋ค
๊ฐ๋จํ๊ฒ 3D ๊ทธ๋ํฝ์ค์ ๋ํ ๊ฐ๋ ์ ์ดํด๋ณด๋ฉด, ์ฐ์ Vertex์ Polygon์ด๋ผ๋ ๊ฒ์ด ์๋ค. Vertex๋ ๊ณต๊ฐ ์ขํ๋ฅผ ์๋ฏธํ๊ณ , ์ด ์ขํ๋ค์ ์ด์ด์ ํ๋์ ๋ํ์ ๋ง๋ค๊ฒ ๋๋๋ฐ, ์ด ๋ ๋ง๋ค์ด์ง ๋ํ์ด Polygon์ด๋ค. ๋ค์์ผ๋ก Texture Mapping ์์ ์ด ์ํ๋๋๋ฐ, Texture๋ ๊ทธ๋ ค์ง ์ด๋ฏธ์ง๋ฅผ ์๋ฏธํ๊ณ ์ด ์ด๋ฏธ์ง๋ฅผ Polygon์ ์์ฐ๋ ์์ ์ Texture Mapping์ด๋ผ๊ณ ํ๋ค. ์ด๋ฌํ ์์ ๋ค์ GPU๊ฐ ์ํํ๊ฒ ๋๋๋ฐ Texture Mapping์ ์ํํ๋ฉฐ ํด๋น ๋ํ์ ํ์ , ํ๋, ์ถ์, ๊ธฐ์ธ์ ๋ฑ์ ๋ณํ(Transform)์ ๋น ๋ฅด๊ฒ ์ ์ฉ ํ ์ ์๋ค. ์ด ๊ณผ์ ์ ์์ฝํด๋ณด๋ฉด Vertex๊ฐ ๋ชจ์ฌ์ Polygon์ Texture๋ฅผ ์ ํ๊ณ , ๋์คํ๋ ์ด์ ์ด๋ฏธ์ง๋ก ์ถ๋ ฅํ๊ฒ ๋๋ค. (์ด ๊ณผ์ ์์ ๋น์ฐํ Video Memory๋ฅผ ์ฌ์ฉํ๋ค.)
GPU๊ฐ ์ํ๋ ๊ฒ๊ณผ ๋ชปํ๋ ๊ฒ
ํ๋์จ์ด ๊ฐ์ ๋ ๋๋ง์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ์ฒซ๊ฑธ์์ GPU๊ฐ ์ํ๋ ๊ฒ๊ณผ ๋ชปํ๋ ๊ฒ์ ์ดํดํ๋ ๊ฒ์ด๋ค.
์ํ๋ ๊ฒ
์์์ ์ค๋ช ํ๋ค์ํผ GPU๋ ์์ ๋ ๋ฐ์ดํฐ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๊ทธ๋ฆฌ๋๋ฐ ์ ํฉํ๋ค. ํ ์ค์ณ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น ๋ฅด๊ฒ ์ถ๋ ฅํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ณ , ํ๋ฒ ๊ทธ๋ ธ๋ ํ ์ค์ณ์ ๋ํด์๋ ๋ค์ ์์ฒญํ์ง ์๊ณ ์ฌํ์ฉํ์ฌ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ๋ค. Transform ์์ (ํ์ , ํ๋, ์ถ์, ๊ธฐ์ธ์ ๋ฑ)์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์๋ ์ต์ ํ ๋์ด ์๋ค.
๋ชปํ๋ ๊ฒ
๋น๋์ค ๋ฉ๋ชจ๋ฆฌ๋ก์ ์ ์ก์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค. ์ด๋ ์์์ ์ค๋ช ํ๋ค์ํผ CPU์์ GPU๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ๋๋ BUS์ ์ ์ก์๋๊ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด ๊ตฌ๊ฐ์์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ์ ๋ฌ ์์ GPU์๊ฒ ๋ด๋ฆฌ๋ ๋ช ๋ น๊ณผ ๋ฒํ ์ค ๋ฐ์ดํฐ๋ ํฐ ์ํฅ์ ์ฃผ์ง ์์ง๋ง ์๋์ ์ผ๋ก ํ ์ค์ณ ์ด๋ฏธ์ง์ ๋ํ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ๋ณ๊ฒฝ์ด ์์ฃผ ์ผ์ด๋๋ฉด ๊ทธ๋งํผ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค. ์ผ๋ฐ์ ์ธ ์ด๋ฏธ์ง ๋ฟ๋ง์๋๋ผ ํ ์คํธ๋ฅผ ํฌํจํ์ฌ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ ๋ชจ๋ ๊ฒ๋ค์ด ๊ทธ๋ ค์ผํ๋ ์์๋ค์ด๋ค.
๋ํ CPU ์ฒ๋ฆฌ ์๊ฐ๋ ํฐ ์ด์๊ฐ ๋๋ค. GPU์ ๋ฐ์ดํฐ๋ CPU์์ ์์ฑ๋ ํ์ ์ ์ก์ด ๋๊ธฐ ๋๋ฌธ์ GPU์ ์์์ด ์๋ฌด๋ฆฌ ์ฌ์ ๋กญ๋ค๊ณ ํด๋ CPU๊ฐ ๋ฐ์๋ฉด ๊ทธ๋งํผ ๋ก๋ฉ ์๋๊ฐ ๋๋ ค์ง๊ฒ ๋๋ค. ์ด ๋ด์ฉ๊ณผ๋ ๋ฌด๊ดํ ๋ด์ฉ์ผ๋ก, ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ webp๋ผ๋ ์ด๋ฏธ์ง ํฌ๋งท์ด ์๋ค. ์ด ํฌ๋งท์ jpg๋ png์ ๊ฐ์ ์ด๋ฏธ์ง ํฌ๋งท๋ณด๋ค ์ฑ๋ฅ์ด ๋ ์ข๋ค๊ณ ํ์ง๋ง ์ด๋ฅผ ์ง์ํ์ง ์๋ ๋ค๋ฉด CPU๊ฐ ํด๋น ํฌ๋งท์ ํ์ฑํ์ฌ ๋นํธ๋งต ํํ๋ก GPU์๊ฒ ์ ๋ฌํด์ฃผ์ด์ผ ํ๋ฏ๋ก CPU์ ๋ถ๋ด์ด ์ปค์ง๊ฒ ๋๊ณ , ๊ทธ๋งํผ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์น ํ์ด์ง์ ๋ ๋๋ง (ํฌ๋กฌ)
์น ํ์ด์ง๋ ํ์ฑ์ ํตํด์ HTML ํ๊ทธ๋ค์ DOM tree์ ํํ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๊ณ , css์ ๋ด์ฉ๋ค๋ Styles struct๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋ค. ์ด ํ DOM tree๋ฅผ Render tree๋ก ์์ฑํ ํ์ ๊ฐ ๋ ธ๋๋ค์ ๊ฐ๋ณ์ ์ธ ์ด๋ฏธ์ง๋ก ์์ฑํ๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ ๋ฐ ์คํ์ผ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ์น ๋ฐ ํฉ์ฑํ์ฌ ์ค์ ๋์คํ๋ ์ด์ ์ถ๋ ฅํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
์ฌ๊ธฐ์ Render tree์ ๊ฐ ๋ ธ๋๋ค์ ์ด๋ฏธ์ง๋ก ์์ฑํ๋ ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง ๋จ์์ ์์๋ค์ ๋ ์ด์ด๋ผ๊ณ ํ๋ค. ์น ํ์ด์ง์์ ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ๋ ๊ณผ์ ์ ๋ณด๋ฉด ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ค๋น๋ ํ์ ์ถ๋ ฅ๋๋ ๊ฒ์ด ์๋๋ผ ๋ถ๋ถ๋ถ๋ถ ๋ก๋ฉ์ด ๋๋ ๊ฒ์ ๋ณผ ์๊ฐ ์๋๋ฐ ์ฌ๊ธฐ์ ๋ถ๋ถ๋ถ๋ถ ์ถ๋ ฅ๋๋ ์์๋ค์ด ๋ ์ด์ด์ด๋ค. Render tree๋ฅผ ํตํด ์์ฑ๋ ์ด๋ฏธ์ง ๋ ์ด์ด๋ค์ด ํ ์ค์ณ๋ก์ GPU์ ์ ๋ก๋ ๋๊ณ , ๋ ์ด์ด๋ค์ ๋ฐฐ์น/ํฉ์ฑ ํ์ฌ ์ต์ข ์ ์ธ ์น ํ์ด์ง๊ฐ ํํ๋๋ค. ์ฃผ์ํ ์ ์ ๋ ์ด์ด์ ์ด๋ฏธ์ง ์์ฑ์ CPU๊ฐ ๋ด๋นํ ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ์์ฑ๋ ๋ ์ด์ด๋ค์ ๋ฐฐ์นํ๊ณ ํฉ์ฑํ๋ ๊ณผ์ ์ Composite ์ด๋ผ๊ณ ํ๋ค.
Reflow & Repaint ๋ฌธ์
๋ ์ด์์์ ๋ณ๊ฒฝ์ด ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ์ ํ๋๋ค. ๋ง์ ๊ฒฝ์ฐ์ ๋ ์ด์ด ์ด๋ฏธ์ง ๊ฐฑ์ ์ด ํ์ํ๊ฒ ๋๋๋ฐ ๋ ์ด์ด ์ด๋ฏธ์ง๊ฐ ๋ณ๊ฒฝ๋๋ฉด GPU์ Video Memory์ ํ ์ค์ณ ๊ฐฑ์ ์ด ํ์ํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ฅผ CPU์์ ๊ณ์ฐํ์ฌ BUS๋ฅผ ํตํด GPU์ ์๋ฆฌ๊ณ ํด๋น ์ ๋ณด๋ฅผ ๊ฐฑ์ ํ์ฌ ๋ค์ ๊ทธ๋ ค์ฃผ๋ ์์ ์ ๊ฑฐ์ณ์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ ๋ฆฌ
- DOM์ผ๋ก๋ถํฐ ๋ ธ๋๋ค์ ๊ฐ๋ณ์ ์ผ๋ก ํน์ ๊ทธ๋ฃน์ง์ด ๋ ์ด์ด ๋จ์๋ค๋ก ๋ถ๋ฆฌ
- ๋ ์ด์์์ ๊ณ์ฐํ๊ณ ๊ฐ ๋ ์ด์ด๋ค์ด ๊ทธ๋ ค์ผํ ์์ญ์ ํฌ๊ธฐ, ์์น ๋ฑ์ ๊ณ์ฐ
- ๊ทธ๋ ค์ผํ ์์ญ ๊ณ์ฐ์ ์ํด CPU์ ์ค๋ฒํค๋ ๋ฐ์
- ๋ ์ด์ด๋ค ๊ฐ๊ฐ์ ๋ ๋๋ง์ ์ํด ๋นํธ๋งต์ผ๋ก ์ถ๋ ฅ
- ๋ ์ด์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด CPU์ ์ค๋ฒํค๋ ๋ฐ์
- ์์ฑ๋ ๋นํธ๋งต์ GPU์ ํ
์ค์ณ๋ก ์
๋ก๋
- GPU์ ๋น๋์ค ๋ฉ๋ชจ๋ฆฌ๋ก ์ ์กํ๋ ์ค๋ฒํค๋ ๋ฐ์
- ๊ณ์ฐ๋ ๋ ์ด์์์ผ๋ก ๋ ์ด์ด์ ํ ์ค์ณ ์ด๋ฏธ์ง๋ค์ ์ต์ข ์คํฌ๋ฆฐ ์ด๋ฏธ์ง๋ก ๋ฐฐ์น, ํฉ์ฑ
ํฌ๋กฌ์์ DOM ๋ ธ๋๊ฐ ๋ ์ด์ด๋ก ๋ถ๋ฆฌ๋๋ ์กฐ๊ฑด๋ค
- 3D ํน์ Perspective๋ฅผ ํํํ๋ CSS transform ์์ฑ์ ๊ฐ์ง ๊ฒฝ์ฐ
- ํ๋์จ์ด ๊ฐ์ ๋์ฝ๋ฉ์ ์ฌ์ฉํ๋ <video> ์๋ฆฌ๋จผํธ
- 3D ์ปจํ ์คํธ ํน์ ํ๋์จ์ด ๊ฐ์ 2D ์ปจํ ์คํธ๋ฅผ ๊ฐ์ง๋ <canvas> ์๋ฆฌ๋จผํธ
- ํฌ๋ช ๋(opacity) ์์ฑ, transform ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉ
- ๊ฐ์ ๊ฐ๋ฅํ CSS ํํฐ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
- Compositing Layer๋ฅผ ํ์ ๋ ธ๋๋ก ๊ฐ์ง ๊ฒฝ์ฐ
- ๋ฎ์ z-index๋ฅผ ๊ฐ์ง ํ์ฒด ๋ ธ๋๊ฐ Compositing Layer๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
๋ ์ด์ด๋ก ๋ถ๋ฆฌ๋๋ฉด ๋ณ๊ฒฝ๋ ๋ ์ด์ด๋ง ๋ค์ ๊ทธ๋ฆฌ๋ฉด ๋๋ฏ๋ก ์ฑ๋ฅ์ ๊ฐ์ ํ ์๊ฐ ์๋ค. ํ์ง๋ง ๋ ์ด์ด๊ฐ ๋๋ฌด ์๊ฒ ์ชผ๊ฐ์ง๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋ฏ๋ก(๋ ์ด์ด ๋ถ๋ฆฌ๋ ํ์ฐ์ ์ผ๋ก ํ ์ค์ณ ์ด๋ฏธ์ง ๋ถ๋ฆฌ๋ฅผ ์๋ฏธ) ๋ฉ๋ชจ๋ฆฌ ํด์ /ํ ๋น์ ๋ํ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผํ๋ค.
Worker
- ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์
- ๋ชจ๋ Worker๋ ์์ ๋ง์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ค.
Web Worker
์๋ฐ์คํฌ๋ฆฝํธ๋ UI ์ค๋ ๋์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฃจํ๋ฅผ ๋๊ฒ ๋๋ฉด UI ๋์๋ block ๋๋ค. Web Worker๋ UI ์ค๋ ๋์ ๋น์ฆ๋์ค ๋ก์ง์ ์ํ ์ค๋ ๋๋ฅผ ๋ถ๋ฆฌํ๊ธฐ ์ํ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
Shared Worker
๋ค์์ ๋ธ๋ผ์ฐ์ง ์ปจํ ์คํธ์์ ์ ๊ทผํ ์ ์๋ Worker
Service Worker
์ด๋ฒคํธ ๋๋ฆฌ๋ธ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ง์์ ์ธ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. ์ฌ๊ธฐ์ ์ง์์ ์ด๋ผ๋ ์๋ฏธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ ค์์ง ์๋๋ผ๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ ๋ฐ์ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. (์๋ฅผ ๋ค๋ฉด ํฌ๋กฌ์์ ํ์ด์ค๋ถ์ ์๋ฆผ ๊ธฐ๋ฅ)
์๊ฒฉ ํธ์ ์๋ฆผ์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐํ์ ์ต์ด ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ฐ, ๋ณด์์ ์ทจ์ฝํ๊ธฐ ๋๋ฌธ์ Service Worker๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฐ๋์ HTTPS๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
Service Worker๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์บ์๋ฅผ ๋ง์ด ํ์ฉํ๊ฒ ๋๋๋ฐ ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ์ ๋ฐ์ดํธ ๋ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ ์ ์๋ค๋ ๋จ์ ์ด ์์ผ๋ฏ๋ก ํ๋ ์ ์ ๋ณด์ ๊ฐ์ ๋ณ๊ฒฝ๋ ์์ง๊ฐ ์ ์ ๋ฐ์ดํฐ๋ค์ ์บ์๋ฅผ ํ์ฉํ๊ณ (cache first), ์ปจํ ์ธ ์ ๊ฐ์ ์์ฃผ ๋ณ๊ฒฝ๋ ์์ง๊ฐ ์๋ ๊ฒ๋ค์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋๋ก ํ๋ ๊ฒ์ด(network first) ์ข๋ค.
์ด ์ธ์ ์ ์ฉํ๋ ์ ๋ณด
- ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ
- Timeline
- Rendering
- Paint Falshin์ ์ฒดํฌํด๋ณด๋ฉด GPU๊ฐ ๋ค์๊ทธ๋ฆฌ๋ ์์ญ ํ์ธ ๊ฐ๋ฅ
- Layer Borders๋ฅผ ์ฒดํฌํ๋ฉด ๋ ์ด์ด ์์ญ ํ์ธ ๊ฐ๋ฅ
- Profiler
- ํ๋กํ์ผ๋ง ์ Profiler์ Timeline ์์ ์ ์ง์ ํด์ฃผ๋ฉด ํ๋กํ์ผ ๊ฐ๋ฅ
- ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ก ์ ๊ณต๋จ
- css์ will-change ์์ฑ
- GPU์๊ฒ ๋ ์ด์ด๋ก ์๋ผ์คฌ์ผ๋ฉด ์ข๊ฒ ๋ค๋ ์์ฒญ. ๋ ์ด์ด๋ก ๊ตฌ๋ถ๋ ์๋ ์๊ณ ์๋ ์๋ ์์
- link ํ๊ทธ์ rel ์์ฑ (ํํธ ์ ๊ณต)
- dns-prefetch
- preconnect
- preload
- prefetch
- script์ defer, async ์์ฑ
- iframe์ data-src ์์ฑ
- iframe์ ๋ ๋๋ง ํ๋ ์๊ฐ ์์ ์ ํ์ด์ง ๋ก๋ฉ์ block๋๋๋ฐ ์ด ์์ฑ์ ์ด์ฉํ๋ฉด ์์ ์ ํ์ด์ง๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋ก๋ฉํ๊ณ ์ด ํ์ iframe์ ๋ก๋ฉํ๋ค.
- HTTP2์์๋ https๋ง ์ฌ์ฉ๊ฐ๋ฅํ๋ค.