๊ธ๋ก๋ฒ ์น ์ต์ ํ๋ฅผ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์ ์ข ํฉ ๊ฐ์ด๋๋ก ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ๊ณผ ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํ๋ณดํ์ธ์.
์น ์ฑ๋ฅ ๋ง์คํฐํ๊ธฐ: ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์ ์ฌ์ธต ํ๊ตฌ
์ค๋๋ ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ํ๊ฒฝ์์ ์น ์ฑ๋ฅ์ ๋ ์ด์ ๋จ์ํ ์ด์ ์ด ์๋๋ผ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋์น์ ๋๋ค. ์ด๊ณ ์ ๊ด์ฌ์ ๋ฅผ ๊ฐ์ถ ๋ฒํํ ๋๋์๋ถํฐ ๋คํธ์ํฌ ์์ ์ฑ์ด ๋ค์ํ ์ธ๋ด ์ง์ญ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ธ๊ณ ์ฌ์ฉ์๋ ์ฆ๊ฐ์ ์ธ ์ ์๊ณผ ์ ์ฐํ ์ํธ์์ฉ์ ์๊ตฌํฉ๋๋ค. ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์น์ ํต์ฌ์๋ ๋ฆฌ์์ค์ ํจ์จ์ ์ธ ์ ๋ฌ๊ณผ ์คํ์ด ์์ผ๋ฉฐ, ์ฌ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ข ์ข ๊ฐ์ฅ ์ค์ํ๊ณ ๋๋ก๋ ๊ฐ์ฅ ์ด๋ ค์ด ์ญํ ์ ํฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์์ ์ฌ์ ์ผ๋ก ์ฌ๋ฌ๋ถ์ ์๋ดํ๋ฉฐ, ์ง์ ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ด๊ณ ์ ์น ๊ฒฝํ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ํ ์ง์๊ณผ ์คํ ๊ฐ๋ฅํ ์ ๋ต์ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
์น์ฌ์ดํธ๊ฐ ์ ๊ตํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ๋๋๋ฉด์ ์ ์ ๋ ๋ณต์กํด์ง์ ๋ฐ๋ผ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ๋ ์ปค์ง๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก์ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง ์ดํดํ๋ ๊ฒ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ์ฌ์ฉ์์ ๋น์ฆ๋์ค ๋ชฉํ์ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
์ค์ ๋ ๋๋ง ๊ฒฝ๋ก(CRP) ์ดํดํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ์ ์ญํ ์ ๋ถ์ํ๊ธฐ ์ ์, ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก(Critical Rendering Path, CRP)์ ๋ํ ๊ธฐ์ด์ ์ธ ์ดํด๋ฅผ ํ๋ฆฝํด ๋ณด๊ฒ ์ต๋๋ค. CRP๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ๋ฉด์ ์ค์ ํฝ์ ๋ก ๋ ๋๋ง๋ ํ์ด์ง๋ก ๋ณํํ๋ ์ผ๋ จ์ ๋จ๊ณ์ ๋๋ค. CRP๋ฅผ ์ต์ ํํ๋ค๋ ๊ฒ์ ์ฌ์ฉ์์๊ฒ ์ฆ์ ๋ณด์ด๋ ์ฝํ ์ธ ์ ํ์๋ฅผ ์ฐ์ ์์๋ก ๋์ด ์ฒด๊ฐ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฃผ์ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- DOM(Document Object Model) ๊ตฌ์ถ: ๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ํ์ด์ง์ ๊ตฌ์กฐ์ ์ฝํ ์ธ ๋ฅผ ๋ํ๋ด๋ DOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- CSSOM(CSS Object Model) ๊ตฌ์ถ: ๋ธ๋ผ์ฐ์ ๋ CSS ํ์ผ๊ณผ ์ธ๋ผ์ธ ์คํ์ผ์ ํ์ฑํ์ฌ DOM ์์์ ์คํ์ผ์ ๊ฒฐ์ ํ๋ CSSOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ๋ ๋ ํธ๋ฆฌ ๊ตฌ์ถ: DOM๊ณผ CSSOM ํธ๋ฆฌ๊ฐ ๊ฒฐํฉํ์ฌ ๋ ๋ ํธ๋ฆฌ๋ฅผ ํ์ฑํฉ๋๋ค. ์ด ํธ๋ฆฌ๋ ๋ณด์ด๋ ์์์ ๊ณ์ฐ๋ ์คํ์ผ๋ง ํฌํจํฉ๋๋ค.
<head>
๋display: none;
๊ณผ ๊ฐ์ ์์๋ ํฌํจ๋์ง ์์ต๋๋ค. - ๋ ์ด์์(๋ฆฌํ๋ก์ฐ): ๋ ๋ ํธ๋ฆฌ๊ฐ ๊ตฌ์ถ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ํ๋ฉด์ ์๋ ๋ชจ๋ ์์์ ์ ํํ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ๊ณผ์ ์ ๋๋ค.
- ํ์ธํธ: ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ ์์์ ์๊ฐ์ ์์ฑ(์์, ํ ๋๋ฆฌ, ๊ทธ๋ฆผ์, ํ ์คํธ, ์ด๋ฏธ์ง)์ ์ ์ฉํ์ฌ ํ๋ฉด์ ํฝ์ ์ ๊ทธ๋ฆฌ๋ ๋ง์ง๋ง ๋จ๊ณ์ ๋๋ค.
- ํฉ์ฑ(Compositing): ์์๋ค์ด ๊ฒน์ณ์ง๊ฑฐ๋ ์ ๋๋ฉ์ด์ ํจ๊ณผ๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ์ด๋ค์ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๋ถ๋ฆฌํ๊ณ ์ต์ข ๋ ๋๋ง์ ์ํด ์ฌ๋ฐ๋ฅธ ์์๋ก ํฉ์ฑํ ์ ์์ต๋๋ค.
CRP ์ต์ ํ์ ๋ชฉํ๋ ์ด๋ฌํ ๋จ๊ณ, ํนํ ์ด๊ธฐ ๊ฐ์ ์ฝํ ์ธ (์ข ์ข "์คํฌ๋กค ์์ด ๋ณผ ์ ์๋ ๋ถ๋ถ(above-the-fold)" ์ฝํ ์ธ ๋ผ๊ณ ํจ)์ ์์๋๋ ์๊ฐ์ ์ต์ํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ๋จ๊ณ, ํนํ ๋ ๋ ํธ๋ฆฌ ๊ตฌ์ถ์ ์ง์ฐ์ํค๋ ๋ชจ๋ ๋ฆฌ์์ค๋ ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก์ ๋ฏธ์น๋ ๋ง๋ํ ์ํฅ
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ ฅํ ์ธ์ด์ด์ง๋ง, ๊ทธ ๋ณธ์ง ์์ฒด๊ฐ CRP์ ์๋นํ ์ง์ฐ์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํ์ ์ฐจ๋จ ์์ฑ: ๊ธฐ๋ณธ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ HTML ํ์๊ฐ
async
๋๋defer
์์ฑ์ด ์๋<script>
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด HTML ํ์ฑ์ ์ผ์ ์ค์งํฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ (์ธ๋ถ ์คํฌ๋ฆฝํธ์ธ ๊ฒฝ์ฐ) ์คํํ ๋ค์, ๋๋จธ์ง HTML ํ์ฑ์ ์ฌ๊ฐํฉ๋๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ ์ฌ์ ์ผ๋ก DOM์ด๋ CSSOM์ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง ๊ตฌ์กฐ๋ฅผ ๊ณ์ ๊ตฌ์ถํ๊ธฐ ์ ์ ์ด๋ฅผ ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ์ผ์ ์ค์ง๋ ์ฃผ์ ๋ณ๋ชฉ ํ์์ ๋๋ค. - DOM ๋ฐ CSSOM ์กฐ์: ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ข ์ข DOM ๋ฐ CSSOM๊ณผ ์ํธ์์ฉํ๊ณ ์ด๋ฅผ ์์ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฌํ ํธ๋ฆฌ๊ฐ ์์ ํ ๊ตฌ์ถ๋๊ธฐ ์ ์ ์คํ๋๊ฑฐ๋ ๊ด๋ฒ์ํ ์กฐ์์ ์ ๋ฐํ๋ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐ(๋ฆฌํ๋ก์ฐ)ํ๊ณ ์์๋ฅผ ๋ค์ ํ์ธํธํ๋๋ก ๊ฐ์ ํ์ฌ ๋น์ฉ์ด ๋ง์ด ๋๋ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ๋คํธ์ํฌ ์์ฒญ: ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋คํธ์ํฌ ์์ฒญ์ด ํ์ํฉ๋๋ค. ์ฌ์ฉ์์ ์ง์ฐ ์๊ฐ๊ณผ ๋์ญํญ์ ์ด๋ฌํ ํ์ผ์ด ์ผ๋ง๋ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋ ์ ์๋์ง์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ธํฐ๋ท ์ธํ๋ผ๊ฐ ๋ ์์ ์ ์ธ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ๋ ์ด๋ ์๋นํ ์ง์ฐ์ ์๋ฏธํ ์ ์์ต๋๋ค.
- ์คํ ์๊ฐ: ๋ค์ด๋ก๋ ํ์๋ ๋ณต์กํ๊ฑฐ๋ ์ ๋๋ก ์ต์ ํ๋์ง ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํด๋ผ์ด์ธํธ ์ฅ์น์์ ํ์ฑํ๊ณ ์คํํ๋ ๋ฐ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ด๋ ํน์ ๊ธ๋ก๋ฒ ์์ฅ์์ ํํ ๋ณผ ์ ์๋ ์ ์ฌ์ ์ฅ์น๋ ๊ตฌํ ํด๋ํฐ์์ ํนํ ๋ฌธ์ ๊ฐ ๋๋๋ฐ, ์ด๋ค ์ฅ์น๋ CPU ์ฑ๋ฅ์ด ๋ฎ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์๋ํํฐ ์คํฌ๋ฆฝํธ: ๋ถ์, ๊ด๊ณ , ์์ ๋ฏธ๋์ด ์์ ฏ ๋ฐ ๊ธฐํ ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ ์ข ์ข ๊ฐ๋ฐ์์ ์ง์ ์ ์ธ ํต์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ถ๊ฐ ๋คํธ์ํฌ ์์ฒญ ๋ฐ ์คํ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํต๋๋ค. ์ด๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก๋ฅผ ํฌ๊ฒ ๋ถํ๋ฆด ์ ์์ต๋๋ค.
๋ณธ์ง์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ์ธ ๊ฒฝํ์ ์กฐ์จํ ์ ์๋ ํ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ ์คํ๊ฒ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ๋๋ฆฐ ํ์ด์ง ๋ก๋ฉ๊ณผ ๋ฐ์ ์๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๊ฐ์ฅ ํฐ ์์ธ์ด ๋ ์๋ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์์ด๋?
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์์ ๋ธ๋ผ์ฐ์ ์ ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก์ ์ ๋ฐ์ ์ธ ํ์ด์ง ๋ก๋ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์๋ณ, ์ธก์ ๋ฐ ์ต์ ํํ๋ ๊ณผ์ ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ ์ดํดํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค:
- ์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ด ๋ ๋๋ง์ ์ฐจ๋จํ๋์ง.
- ์ด๋ฌํ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ด๋ก๋, ํ์ฑ, ์ปดํ์ผ ๋ฐ ์คํ์ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ ์๋นํ๋์ง.
- ์ด๋ฌํ ์คํฌ๋ฆฝํธ๊ฐ ์ฒซ ์ฝํ ์ธ ํ ํ์ธํธ(FCP), ์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP), ์ํธ์์ฉ๊น์ง์ ์๊ฐ(TTI)๊ณผ ๊ฐ์ ์ฃผ์ ์ฌ์ฉ์ ๊ฒฝํ ์งํ์ ๋ฏธ์น๋ ์ํฅ.
- ์๋ก ๋ค๋ฅธ ์คํฌ๋ฆฝํธ์ ๋ค๋ฅธ ๋ฆฌ์์ค ๊ฐ์ ์์กด์ฑ.
๋ชฉํ๋ ์ด๊ธฐ ์ฌ์ฉ์ ๊ฒฝํ์ ํ์ํ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ต๋ํ ๋นจ๋ฆฌ ์ ๋ฌํ๊ณ , ๋๋จธ์ง๋ ์ง์ฐ์ํค๊ฑฐ๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ๋คํธ์ํฌ ์ํ๋ ์ฅ์น ๊ธฐ๋ฅ์ ๊ด๊ณ์์ด ๋ถํ์ํ ์ง์ฐ ์์ด ์๋ฏธ ์๋ ์ฝํ ์ธ ๋ฅผ ๋ณด๊ณ ํ์ด์ง์ ์ํธ์์ฉํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ์ํฅ์ ๋ฐ๋ ์ฃผ์ ์งํ
์ค์ ๊ฒฝ๋ก์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ํํ๋ฉด ์ฌ๋ฌ ์ค์ํ ์น ์ฑ๋ฅ ์งํ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ฉฐ, ์ด๋ค ์ค ๋ค์๋ Google์ ์ฝ์ด ์น ๋ฐ์ดํ์ ํฌํจ๋์ด SEO ๋ฐ ์ ์ธ๊ณ ์ฌ์ฉ์ ๋ง์กฑ๋์ ์ํฅ์ ์ค๋๋ค:
์ฒซ ์ฝํ ์ธ ํ ํ์ธํธ(FCP)
FCP๋ ํ์ด์ง ๋ก๋ฉ ์์๋ถํฐ ํ์ด์ง ์ฝํ ์ธ ์ ์ผ๋ถ๊ฐ ํ๋ฉด์ ๋ ๋๋ง๋ ๋๊น์ง์ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ๋ฌด์ธ๊ฐ ์ผ์ด๋๊ณ ์์์ ์ธ์งํ๋ ์ฒซ ์๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ ๋๋ง์ ์ฐจ๋จํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์คํํ ๋๊น์ง ์ฝํ ์ธ ๋ฅผ ๋ ๋๋งํ ์ ์๊ธฐ ๋๋ฌธ์ FCP๋ฅผ ํฌ๊ฒ ์ง์ฐ์ํต๋๋ค. ๋๋ฆฐ FCP๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ๋๋ฆฌ๋ค๊ณ ์ธ์ํ๊ฑฐ๋ ์ฌ์ง์ด ์ดํํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ, ํนํ ๋๋ฆฐ ๋คํธ์ํฌ์์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ต๋ ์ฝํ ์ธ ํ ํ์ธํธ(LCP)
LCP๋ ๋ทฐํฌํธ ๋ด์ ๋ณด์ด๋ ๊ฐ์ฅ ํฐ ์ด๋ฏธ์ง ๋๋ ํ ์คํธ ๋ธ๋ก์ ๋ ๋๋ง ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ์ด ์งํ๋ ํ์ด์ง์ ์ฒด๊ฐ ๋ก๋ฉ ์๋๋ฅผ ๋ํ๋ด๋ ํต์ฌ ์งํ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ์์ผ๋ก LCP์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค: ์ค์ํ ์ด๋ฏธ์ง๋ ํ ์คํธ ๋ธ๋ก์ด ๊ฐ์์ฑ์ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ์ ์์กดํ๋ ๊ฒฝ์ฐ, ๋ ๋๋ง์ ์ฐจ๋จํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ด๋ฌํ ์์๋ฅผ ํฌํจํ๋ HTML์ ํ์ฑ์ ์ง์ฐ์ํค๋ ๊ฒฝ์ฐ, ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ด ๋ฉ์ธ ์ค๋ ๋ ๋ฆฌ์์ค๋ฅผ ๋๊ณ ๊ฒฝ์ํ์ฌ ๋ ๋๋ง ํ๋ก์ธ์ค๋ฅผ ์ง์ฐ์ํค๋ ๊ฒฝ์ฐ์ ๋๋ค.
์ต์ด ์ ๋ ฅ ์ง์ฐ(FID)
FID๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ฒ์ ์ํธ์์ฉ(์: ๋ฒํผ ํด๋ฆญ, ๋งํฌ ํญ)ํ ์์ ๋ถํฐ ๋ธ๋ผ์ฐ์ ๊ฐ ์ค์ ๋ก ํด๋น ์ํธ์์ฉ์ ๋ํ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ ์์ ๋๊น์ง์ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ๋ฉ์ธ ์ค๋ ๋์์ ๋ฌด๊ฑฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ฐจ๋จ๋์ด ํ์ด์ง๊ฐ ์ฌ์ฉ์ ์ ๋ ฅ์ ์๋ตํ์ง ์๊ฒ ๋์ด ๋์ FID๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ด ์งํ๋ ์ํธ์์ฉ์ฑ๊ณผ ์ฌ์ฉ์ ๋ง์กฑ๋, ํนํ ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ํธ์์ฉ๊น์ง์ ์๊ฐ(TTI)
TTI๋ ํ์ด์ง๊ฐ ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํด์ง ๋๊น์ง์ ์๊ฐ์ ์ธก์ ํฉ๋๋ค. ํ์ด์ง๋ ์ ์ฉํ ์ฝํ ์ธ ๋ฅผ ํ์ํ๊ณ (FCP), 50๋ฐ๋ฆฌ์ด ์ด๋ด์ ์ฌ์ฉ์ ์ ๋ ฅ์ ์์ ์ ์ผ๋ก ์๋ตํ ๋ ์์ ํ ์ํธ์์ฉ ๊ฐ๋ฅํ๋ค๊ณ ๊ฐ์ฃผ๋ฉ๋๋ค. ์ฅ์๊ฐ ์คํ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ , ํนํ ์ด๊ธฐ ๋ก๋ ์ค์ ๋ฐ์ํ๋ ์์ ์ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ฌ ํ์ด์ง๊ฐ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์๋ตํ๋ ๊ฒ์ ๋ง์ TTI๋ฅผ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค. TTI ์ ์๊ฐ ๋ฎ์ผ๋ฉด ์ฌ์ดํธ์ ์ฆ์ ์ํธ์์ฉํ๋ ค๋ ์ฌ์ฉ์์๊ฒ ํนํ ๋ต๋ตํ ์ ์์ต๋๋ค.
์ด ์ฐจ๋จ ์๊ฐ(TBT)
TBT๋ FCP์ TTI ์ฌ์ด์์ ๋ฉ์ธ ์ค๋ ๋๊ฐ ์ ๋ ฅ ์๋ต์ฑ์ ๋ฐฉํดํ ๋งํผ ์ถฉ๋ถํ ์ค๋ซ๋์ ์ฐจ๋จ๋ ์ด ์๊ฐ์ ์ธก์ ํฉ๋๋ค. 50ms๋ฅผ ์ด๊ณผํ๋ ๋ชจ๋ ๊ธด ์์ ์ TBT์ ๊ธฐ์ฌํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ๊ธด ์์ ์ ์ฃผ์ ์์ธ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ ์ต์ ํํ๊ณ , ํ์ด๋ก๋๋ฅผ ์ค์ด๊ณ , ์์ ์ ์คํ๋ก๋ํ๋ ๊ฒ์ TBT๋ฅผ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์๋ต์ฑ์ ๊ฐ์ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์ ๋๊ตฌ
ํจ๊ณผ์ ์ธ ๋ถ์์๋ ๊ฐ๋ ฅํ ๋๊ตฌ๊ฐ ํ์ํฉ๋๋ค. ๋ค์์ ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์์ ํ์์ ์ธ ๋ช ๊ฐ์ง ๋ฆฌ์์ค์ ๋๋ค:
๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ(Chrome DevTools)
Chrome DevTools๋ ์ด์ ์ฒด์ ๋ ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ ๋ณดํธ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ์ฌ์ธต์ ์ธ ์ฑ๋ฅ ๋ถ์์ ์ํ ํ๋ถํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ฑ๋ฅ ํจ๋:
- ํ์ด์ง ๋ก๋๋ฅผ ๊ธฐ๋กํ์ฌ ์ ์ฒด ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก๋ฅผ ์๊ฐํํฉ๋๋ค. ์คํฌ๋ฆฝํธ๊ฐ ์ธ์ ๋ค์ด๋ก๋, ํ์ฑ, ์ปดํ์ผ, ์คํ๋๋์ง ๋ณผ ์ ์์ต๋๋ค.
- TBT์ FID์ ๊ธฐ์ฌํ๋ "๊ธด ์์ "(๋ฉ์ธ ์ค๋ ๋๋ฅผ 50ms ์ด์ ์ฐจ๋จํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ )์ ์๋ณํฉ๋๋ค.
- CPU ์ฌ์ฉ๋์ ๋ถ์ํ๊ณ ๊ฐ์ฅ ๋ง์ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ์๋นํ๋ ํจ์๋ฅผ ์๋ณํฉ๋๋ค.
- ํ๋ ์ ์๋, ๋ ์ด์์ ๋ณ๊ฒฝ, ํ์ธํ ์ด๋ฒคํธ๋ฅผ ์๊ฐํํฉ๋๋ค.
- ๋คํธ์ํฌ ํจ๋:
- ๋ชจ๋ ๋คํธ์ํฌ ์์ฒญ(HTML, CSS, JS, ์ด๋ฏธ์ง, ํฐํธ)์ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- "JS"๋ก ํํฐ๋งํ์ฌ ์์ฒญ๋ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ด ๋๋ค.
- ๋ค์ด๋ก๋ ํฌ๊ธฐ, ์ ์ก ์๊ฐ, ์์ฒญ ์ฐ์ ์์๋ฅผ ๊ด์ฐฐํฉ๋๋ค.
- ๋ ๋๋ง ์ฐจ๋จ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ณํฉ๋๋ค(์ข ์ข ์ํฐํด ๋ค์ด์ด๊ทธ๋จ์ ์ด๊ธฐ ์์น๋ก ํ์๋จ).
- ๋ค์ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ๋ํ ์ฑ๋ฅ ์ํฅ์ ์ดํดํ๊ธฐ ์ํด ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด(์: "๋น ๋ฅธ 3G", "๋๋ฆฐ 3G")์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
- ์ปค๋ฒ๋ฆฌ์ง ํจ๋:
- ์ฌ์ฉ๋์ง ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ CSS ์ฝ๋๋ฅผ ์๋ณํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ธ ํ์ด์ง ๋ก๋ ์ค์ ์คํ๋์ง ์๋ ์ฝ๋ ๋ถ๋ถ์ ๋ณด์ฌ์ค์ผ๋ก์จ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- ์ค์ ๋ก ํ์ํ ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ถํ์ํ๊ฒ ๋ก๋๋๋ ๊ฒ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- Lighthouse:
- Chrome DevTools์ ํตํฉ๋ ์๋ํ๋ ๋๊ตฌ๋ก ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ๊ฐ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- "๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ์ ๊ฑฐ", "์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์๊ฐ ๋จ์ถ", "์ฌ์ฉํ์ง ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ฑฐ"์ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ด๋ จ๋ ์คํ ๊ฐ๋ฅํ ์ ์์ ์ ๊ณตํฉ๋๋ค.
- FCP, LCP, TTI, TBT์ ๊ฐ์ ์ฃผ์ ์งํ์ ๋ํ ์ ์๋ฅผ ์์ฑํ์ฌ ๊ฐ์ ์ ์ํ ๋ช ํํ ๋ฒค์น๋งํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
WebPageTest
WebPageTest๋ ์ฌ๋ฌ ๊ธ๋ก๋ฒ ์์น์ ์ฅ์น์์ ๊ณ ๊ธ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๋ฌด๋ฃ ๋๊ตฌ์ ๋๋ค. ์ด๋ ์ฌ๋ฌ ์ง์ญ๊ณผ ์ฌ์ฉ์ ์ปจํ ์คํธ์ ๊ฑธ์น ์ฑ๋ฅ ๊ฒฉ์ฐจ๋ฅผ ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์ ์ธ๊ณ ์ฌ๋ฌ ๋์์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ์ค์ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ๊ณผ ์๋ฒ ์๋ต ์๊ฐ์ ์ธก์ ํฉ๋๋ค.
- ๋ค์ํ ์ฐ๊ฒฐ ์๋(์: ์ผ์ด๋ธ, 3G, 4G)์ ์ฅ์น ์ ํ(์: ๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ)์ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
- ์์ธํ ์ํฐํด ์ฐจํธ, ํ๋ฆ์คํธ๋ฆฝ(ํ์ด์ง ๋ก๋์ ์๊ฐ์ ์งํ ๊ณผ์ ), ์ต์ ํ๋ ์ฝํ ์ธ ๋ถ์์ ์ ๊ณตํฉ๋๋ค.
- "์ฐจ๋จ ์๊ฐ", "์คํฌ๋ฆฝํ ์๊ฐ", "์ฒซ ๋ฐ์ดํธ๊น์ง์ ์๊ฐ"๊ณผ ๊ฐ์ ํน์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๊ฐ์กฐํฉ๋๋ค.
Google PageSpeed Insights
Lighthouse์ ์ค์ ๋ฐ์ดํฐ(CrUX - Chrome ์ฌ์ฉ์ ๊ฒฝํ ๋ณด๊ณ ์)๋ฅผ ๋ชจ๋ ํ์ฉํ๋ PageSpeed Insights๋ ํ์ด์ง ์ฑ๋ฅ์ ๋ํ ๋น ๋ฅธ ๊ฐ์์ ์คํ ๊ฐ๋ฅํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค.
- "ํ๋ ๋ฐ์ดํฐ"(์ค์ ์ฌ์ฉ์ ๊ฒฝํ)์ "๋ฉ ๋ฐ์ดํฐ"(์๋ฎฌ๋ ์ด์ ํ๊ฒฝ)๋ฅผ ๋ชจ๋ ์ ์ํฉ๋๋ค.
- ์คํ ์๊ฐ ๋จ์ถ์ด๋ ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ์ ๊ฑฐ์ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ ๊ธฐํ๋ฅผ ๋ช ํํ๊ฒ ํ์ํฉ๋๋ค.
- ํตํฉ ์ ์์ ๋ช ํํ ์์ ์ฝ๋ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ์ฌ ์ฝ๊ฒ ํด์ํ ์ ์์ต๋๋ค.
๋ฒ๋ค๋ฌ ๋ถ์ ๋๊ตฌ(์: Webpack Bundle Analyzer, Rollup Visualizer)
Webpack์ด๋ Rollup๊ณผ ๊ฐ์ ๋ฒ๋ค๋ฌ๋ก ๊ตฌ์ถ๋ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ์ด ๋๊ตฌ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ๊ตฌ์ฑ์ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ๋ด ๊ฐ ๋ชจ๋์ ํฌ๊ธฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํฉ๋๋ค.
- ํฌ๊ณ ๋ถํ์ํ ์์กด์ฑ์ด๋ ์ค๋ณต๋ ์ฝ๋๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํจ๊ณผ์ ์ธ ์ฝ๋ ๋ถํ ๋ฐ ํธ๋ฆฌ ์์ดํน ์ ๋ต์ ํ์์ ์ด๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ์ค์ผ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ์ต์ ํ ์ ๋ต
์ด์ ๋ฌธ์ ์ ๋๊ตฌ๋ฅผ ์ดํดํ์ผ๋, ์ค์ ๊ฒฝ๋ก์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ํํ๊ธฐ ์ํ ์ค์ฉ์ ์ด๊ณ ์คํ ๊ฐ๋ฅํ ์ ๋ต์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ๋ ๋๋ง ์ฐจ๋จ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ฑฐ
์ด๊ฒ์ ์๋ง๋ ๊ฐ์ฅ ์ํฅ๋ ฅ ์๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์ผ ๊ฒ์ ๋๋ค. ๋ชฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ธ๋ผ์ฐ์ ์ HTML ํ์ฑ ๋ฐ ๋ ๋๋ง ํ๋ก์ธ์ค๋ฅผ ์ค์ง์ํค๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค.
async
๋ฐdefer
์์ฑ ์ฌ์ฉ:async
: ๋ธ๋ผ์ฐ์ ์ HTML ํ์ฑ๊ณผ ๋ณํํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํฉ๋๋ค. ๋ค์ด๋ก๋๊ฐ ์๋ฃ๋๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ฉฐ, ํ์ฑ์ด ์๋ฃ๋๊ธฐ ์ ์ ์ค๋น๋๋ฉด HTML ํ์ฑ์ ์ฐจ๋จํ ์ ์์ต๋๋ค. ์ฌ๋ฌasync
์คํฌ๋ฆฝํธ์ ์คํ ์์๋ ๋ณด์ฅ๋์ง ์์ต๋๋ค. ์ฆ์ DOM์ด๋ CSSOM์ ์์ ํ์ง ์๋ ๋ถ์ ๋๋ ์๋ํํฐ ์์ ฏ๊ณผ ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์คํฌ๋ฆฝํธ์ ์ด์์ ์ ๋๋ค.defer
: ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ค์ด๋ก๋ํ์ง๋ง, ์คํ์ HTML ํ์ฑ์ด ์๋ฃ๋ ๋๊น์ง ์ง์ฐ๋ฉ๋๋ค.defer
์์ฑ์ด ์๋ ์คํฌ๋ฆฝํธ๋ HTML์ ๋ํ๋๋ ์์๋๋ก ์คํ๋ฉ๋๋ค. ์ ์ฒด DOM์ด ํ์ํ ์คํฌ๋ฆฝํธ(์: ๋ํํ ์์ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง)์ ์ด์์ ์ ๋๋ค.- ์์:
<script src="analytics.js" async></script>
<script src="app-logic.js" defer></script>
- ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ๋ผ์ธ: ์คํฌ๋กค ์์ด ๋ณผ ์ ์๋ ์ฝํ
์ธ ์ ์ฆ์ ํ์ํ ๋งค์ฐ ์์ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์ค๋ํซ(์: ์ค์ํ UI ์ปดํฌ๋ํธ๋ฅผ ์ด๊ธฐํํ๋ ์คํฌ๋ฆฝํธ)์ ๊ฒฝ์ฐ,
<script>
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ HTML์ ์ง์ ์ธ๋ผ์ธํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ ๋คํธ์ํฌ ์์ฒญ์ ํผํ์ง๋ง, ์ธ๋ผ์ธ ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์ ์ํด ์บ์๋์ง ์์ผ๋ฉฐ ์ด๊ธฐ HTML ํ์ด๋ก๋๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์์์ ๊ธฐ์ตํ์ญ์์ค. ์ ๋ง๋ก ์ค์ํ๊ณ ์์ ์คํฌ๋ฆฝํธ์๋ง ๋๋ฌผ๊ฒ ์ฌ์ฉํ์ญ์์ค. - ์ค์ํ์ง ์์ ์คํฌ๋ฆฝํธ๋ฅผ
<body>
๋์ผ๋ก ์ด๋: ์ค์ํ์ง ์์<script>
ํ๊ทธ๋ฅผ ๋ซ๋</body>
ํ๊ทธ ๋ฐ๋ก ์์ ๋ฐฐ์นํ๋ฉด ์คํฌ๋ฆฝํธ๊ฐ ๋ง์ฃผ์น๊ณ ์คํ๋๊ธฐ ์ ์ HTML ์ฝํ ์ธ ๊ฐ ํ์ฑ๋๊ณ ๋ ๋๋ง๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋ง๋ค์ง๋ ์์ง๋ง ํจ๊ณผ์ ์ผ๋ก ๋ ๋๋ง์ ์ฐจ๋จํ์ง ์๊ฒ ํฉ๋๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ ํ์ด๋ก๋ ํฌ๊ธฐ ์ค์ด๊ธฐ
ํ์ผ์ด ์์์๋ก ๋ ๋นจ๋ฆฌ ๋ค์ด๋ก๋๋๋ฉฐ, ์ด๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ค์ํ ๋คํธ์ํฌ ์กฐ๊ฑด์์ ํนํ ์ค์ํฉ๋๋ค.
- ์ถ์(Minification): ๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์์ ๋ถํ์ํ ๋ฌธ์(๊ณต๋ฐฑ, ์ฃผ์, ์ธ๋ฏธ์ฝ๋ก )๋ฅผ ์ ๊ฑฐํฉ๋๋ค. UglifyJS๋ Terser์ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ก ์ด๋ฅผ ์๋ํํ ์ ์์ต๋๋ค.
- ์์ถ(Gzip/Brotli): ์น ์๋ฒ๊ฐ Gzip ๋๋ Brotli ์์ถ์ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ๊ณตํ๋๋ก ํ์ญ์์ค. Brotli๋ ์ข ์ข Gzip๋ณด๋ค ๋ ๋์ ์์ถ๋ฅ ์ ์ ๊ณตํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๋ ํ์ผ ํฌ๊ธฐ๋ฅผ ๋์ฑ ์ค์ฌ์ค๋๋ค. ๋๋ถ๋ถ์ ์ต์ CDN ๋ฐ ์น ์๋ฒ๋ ์ด๋ฅผ ์ง์ํฉ๋๋ค.
- ํธ๋ฆฌ ์์ดํน ๋ฐ ๋ฐ๋ ์ฝ๋ ์ ๊ฑฐ: ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค๋ฌ(Webpack, Rollup, Parcel)๋ ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ์ฌ์ฉ๋์ง ์๋ ๋ด๋ณด๋ด๊ธฐ(export) ๋ฐ ๋ชจ๋์ ์ ๊ฑฐํ ์ ์๋๋ฐ, ์ด ๊ณผ์ ์ ํธ๋ฆฌ ์์ดํน์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ์ต์ข
๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๊ทน์ ์ผ๋ก ์ค์ฌ์ค๋๋ค. ์ต์ ์ ํธ๋ฆฌ ์์ดํน์ ์ํด ์ฝ๋๊ฐ ES ๋ชจ๋(
import
/export
)๋ก ์์ฑ๋์๋์ง ํ์ธํ์ญ์์ค. - ์ฝ๋ ๋ถํ ๋ฐ ์ง์ฐ ๋ก๋ฉ(Lazy Loading): ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ ๋ฒ์ ๋ก๋ํ๋ ๋์ , ์ฝ๋๋ฅผ ๋ ์๊ณ ๋
๋ฆฝ์ ์ธ ์ฒญํฌ๋ก ๋ถํ ํ์ญ์์ค. ์ด ์ฒญํฌ๋ค์ ํ์ํ ๋๋ง(์: ์ฌ์ฉ์๊ฐ ํน์ ๊ฒฝ๋ก๋ก ์ด๋ํ๊ฑฐ๋, ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋, ํน์ ์น์
์ผ๋ก ์คํฌ๋กคํ ๋) ๋ก๋ํฉ๋๋ค. ์ด๋ ์ด๊ธฐ ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ด๋ก๋๋ฅผ ํฌ๊ฒ ์ค์
๋๋ค.
- ๋์ ์ํฌํธ(Dynamic Imports):
import()
๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ๋ก๋ํฉ๋๋ค. ์์:const module = await import('./my-module.js');
- ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ถํ : ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์์ ๋ค๋ฅธ ๊ฒฝ๋ก์ ๋ํด ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ๋ก๋ํฉ๋๋ค.
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๋ถํ : ๊ฐ๋ณ ์ปดํฌ๋ํธ๊ฐ ํ์๋ ๋๋ง ํด๋น ์ปดํฌ๋ํธ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค.
- ๋์ ์ํฌํธ(Dynamic Imports):
- ๋ถํ์ํ ํด๋ฆฌํ ํผํ๊ธฐ: ํ๊ฒ ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์์ ์ค์ ๋ก ๋๋ฝ๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๋ํด์๋ง ํด๋ฆฌํ์ ํฌํจํ์ญ์์ค. Babel๊ณผ ๊ฐ์ ๋๊ตฌ๋ browserlist ๊ตฌ์ฑ์ ๋ฐ๋ผ ํ์ํ ํด๋ฆฌํ๋ง ํฌํจํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
- ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฌ์ฉ: ๋ ํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์์ฑ์ ์ค์ด๋ ์ต์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ํ์ฉํ์ญ์์ค(์: jQuery์ AJAX ๋์ ๋ค์ดํฐ๋ธ Fetch API, ํ ๋ง ๊ด๋ฆฌ๋ฅผ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋์ CSS ๋ณ์).
3. ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์ต์ ํ
์๊ณ ์ค์ํ ์คํฌ๋ฆฝํธ๋ผ๋ ๋นํจ์จ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
- ์น ์์ปค(Web Workers): ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ (์: ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ด๋ฏธ์ง ์กฐ์, ๋ฌด๊ฑฐ์ด ๊ณ์ฐ)์ ๊ฒฝ์ฐ, ์น ์์ปค๋ก ์คํ๋ก๋ํ์ญ์์ค. ์น ์์ปค๋ ๋ณ๋์ ์ค๋ ๋์์ ์คํ๋๋ฏ๋ก ๋ฉ์ธ UI ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ํ์ด์ง ์๋ต์ฑ์ ์ ์งํฉ๋๋ค. ์ด๋ค์ ๋ฉ์์ง ์ ๋ฌ์ ํตํด ๋ฉ์ธ ์ค๋ ๋์ ํต์ ํฉ๋๋ค.
- ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง: ์์ฃผ ๋ฐ์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ(์:
scroll
,resize
,mousemove
,input
)์ ๊ฒฝ์ฐ, ๋๋ฐ์ด์ฑ์ด๋ ์ค๋กํ๋ง์ ์ฌ์ฉํ์ฌ ๊ด๋ จ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๊ฐ ์คํ๋๋ ๋น๋๋ฅผ ์ ํํ์ญ์์ค. ์ด๋ ๋ถํ์ํ ๊ณ์ฐ๊ณผ DOM ์กฐ์์ ์ค์ ๋๋ค.- ๋๋ฐ์ด์ฑ: ํน์ ๊ธฐ๊ฐ ๋์ ํ๋์ด ์์ ๋๋ง ํจ์๋ฅผ ์คํํฉ๋๋ค.
- ์ค๋กํ๋ง: ์ฃผ์ด์ง ์๊ฐ ๋ด์ ํจ์๋ฅผ ์ต๋ ํ ๋ฒ๋ง ์คํํฉ๋๋ค.
- ๋ฃจํ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ: ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ๋ชจ๋ ๋ฃจํ๋ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒํ ํ๊ณ ์ต์ ํํ์ญ์์ค. ์์ ๋นํจ์จ์ฑ๋ ์์ฃผ ์คํ๋๊ฑฐ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์์ ์คํ๋ ๋ ๊ทน์ ์ผ๋ก ์ฆํญ๋ ์ ์์ต๋๋ค.
- ์ ๋๋ฉ์ด์
์
requestAnimationFrame
์ฌ์ฉ: ๋ถ๋๋ฌ์ด ์๊ฐ์ ์ ๋ฐ์ดํธ์ ์ ๋๋ฉ์ด์ ์ ์ํดrequestAnimationFrame
์ ์ฌ์ฉํ์ญ์์ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์ ์ ๋๋ฉ์ด์ ์ ์ํํ๊ณ ์ถ๋ค๊ณ ์๋ฆฌ๊ณ , ๋ธ๋ผ์ฐ์ ์ ๋ค์ ๋ฆฌํ์ธํธ ์ ์ ์ง์ ๋ ํจ์๋ฅผ ํธ์ถํ์ฌ ์ ๋๋ฉ์ด์ ์ ์ ๋ฐ์ดํธํ๋๋ก ์์ฒญํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ๋ฐ์ดํธ๊ฐ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์ฃผ๊ธฐ์ ๋๊ธฐํ๋ฉ๋๋ค. - ํจ์จ์ ์ธ DOM ์กฐ์: ๊ด๋ฒ์ํ๊ณ ๋น๋ฒํ DOM ์กฐ์์ ๋น์ฉ์ด ๋ง์ด ๋๋ ๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. DOM ์
๋ฐ์ดํธ๋ฅผ ์ผ๊ด ์ฒ๋ฆฌํ์ญ์์ค(์: ๋ถ๋ฆฌ๋ DOM ์์๋ DocumentFragment์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ๋ค์ ํ ๋ฒ์ ์ถ๊ฐ). DOM์ ์ด ์งํ ๊ณ์ฐ๋ ์คํ์ผ(
offsetHeight
๋๋getBoundingClientRect
๋ฑ)์ ์ฝ๋ ๊ฒ์ ํผํ์ญ์์ค. ์ด๋ ๊ฐ์ ์ ์ธ ๋๊ธฐ์ ๋ฆฌํ๋ก์ฐ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
4. ํจ์จ์ ์ธ ์คํฌ๋ฆฝํธ ๋ก๋ฉ ๋ฐ ์บ์ฑ
์คํฌ๋ฆฝํธ๊ฐ ์ ๋ฌ๋๊ณ ์ ์ฅ๋๋ ๋ฐฉ์์ ์ค์ ๊ฒฝ๋ก ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- HTTP/2 ๋ฐ HTTP/3: ์๋ฒ์ CDN์ด HTTP/2 ๋๋ HTTP/3๋ฅผ ์ง์ํ๋์ง ํ์ธํ์ญ์์ค. ์ด๋ฌํ ํ๋กํ ์ฝ์ ๋ค์คํ(๋จ์ผ ์ฐ๊ฒฐ์ ํตํ ์ฌ๋ฌ ์์ฒญ/์๋ต), ํค๋ ์์ถ, ์๋ฒ ํธ์๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ HTTP/1.1์ ๋นํด ์ฌ๋ฌ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ๋ฌ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ์บ์ฑ์ ์ํ ์๋น์ค ์์ปค: ์๋น์ค ์์ปค๋ฅผ ๊ตฌํํ์ฌ ์ด๊ธฐ ๋ค์ด๋ก๋ ํ ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ(๋ฐ ๊ธฐํ ์์ฐ)์ ์บ์ํ์ญ์์ค. ์ฌ๋ฐฉ๋ฌธ์์ ๊ฒฝ์ฐ, ์ด๋ ์บ์์์ ์ด๋ฌํ ๋ฆฌ์์ค์ ์ฆ์ ์ ๊ทผํ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์คํ๋ผ์ธ ์ํ์์๋ ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ๊ฐ์ ํฉ๋๋ค.
- ์ฝํ
์ธ ํด์๋ฅผ ์ด์ฉํ ์ฅ๊ธฐ ์บ์ฑ: ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ฐ์ ๊ฒฝ์ฐ, ํ์ผ ์ด๋ฆ์ ์ฝํ
์ธ ํด์(์:
app.1a2b3c.js
)๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ด๋ฅผ ํตํด ๋งค์ฐ ๊ธด ๊ธฐ๊ฐ ๋์ ๊ณต๊ฒฉ์ ์ธ ์บ์ฑ ํค๋(์:Cache-Control: max-age=31536000
)๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ํด์๊ฐ ๋ณ๊ฒฝ๋์ด ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ฒ์ ์ ๋ค์ด๋ก๋ํ๋๋ก ๊ฐ์ ํฉ๋๋ค. - ํ๋ฆฌ๋ก๋ ๋ฐ ํ๋ฆฌํ์น:
<link rel="preload">
: ๋ ๋๋ง์ ์ฐจ๋จํ์ง ์์ผ๋ฉด์ ํ์ฌ ํ์์ ๋งค์ฐ ์ค์ํ ๋ฆฌ์์ค๋ฅผ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๊ฐ์ ธ์ค๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฆฝ๋๋ค. ํ์์ ์ํด ๋ฆ๊ฒ ๋ฐ๊ฒฌ๋๋ ํ์ผ(์: ๋์ ์ผ๋ก ๋ก๋๋๊ฑฐ๋ CSS ๊น์์ด ์ฐธ์กฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ)์ ์ฌ์ฉํ์ญ์์ค.<link rel="prefetch">
: ํฅํ ํ์์ ํ์ํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๋ธ๋ผ์ฐ์ ์ ์๋ฆฝ๋๋ค. ์ด๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํํธ์ด๋ฉฐ ํ์ฌ ํ์ด์ง์ ๋ ๋๋ง์ ์ฐจ๋จํ์ง ์์ต๋๋ค.- ์์:
<link rel="preload" href="/critical-script.js" as="script">
5. ์๋ํํฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ต์ ํ
์๋ํํฐ ์คํฌ๋ฆฝํธ(๊ด๊ณ , ๋ถ์, ์์ ์๋ฒ ๋)๋ ์ข ์ข ์๋นํ ์ฑ๋ฅ ๋น์ฉ์ ๋๋ฐํฉ๋๋ค.
- ์๋ํํฐ ์คํฌ๋ฆฝํธ ๊ฐ์ฌ: ์ฌ์ดํธ์ ๋ก๋๋๋ ๋ชจ๋ ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ์ญ์์ค. ๋ชจ๋ ํ์ํ๊ฐ์? ์ ๊ฑฐํ๊ฑฐ๋ ๋ ๊ฐ๋ฒผ์ด ๋์์ผ๋ก ๊ต์ฒดํ ์ ์๋ ๊ฒ์ด ์๋์? ์ผ๋ถ ์คํฌ๋ฆฝํธ๋ ์ค๋ณต๋ ์๋ ์์ต๋๋ค.
async
๋๋defer
์ฌ์ฉ: ํญ์ ์๋ํํฐ ์คํฌ๋ฆฝํธ์async
๋๋defer
์์ฑ์ ์ ์ฉํ์ญ์์ค. ์ผ๋ฐ์ ์ผ๋ก ๊ทธ ๋ด์ฉ์ ์ ์ดํ ์ ์์ผ๋ฏ๋ก, ๊ธฐ๋ณธ ์ฝํ ์ธ ๋ฅผ ์ฐจ๋จํ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.- ์๋ฒ ๋ ์ง์ฐ ๋ก๋ฉ: ์์ ๋ฏธ๋์ด ์๋ฒ ๋(ํธ์ํฐ ํผ๋, ์ ํ๋ธ ๋น๋์ค)๋ ๋ณต์กํ ๊ด๊ณ ๋จ์์ ๊ฒฝ์ฐ, ๋ทฐํฌํธ์ ํ์๋๊ธฐ ์ง์ ์๋ง ๋ก๋๋๋๋ก ์ง์ฐ ๋ก๋ฉํ์ญ์์ค.
- ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์์ฒด ํธ์คํ : ํน์ ์๊ณ ์ค์ํ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: ํน์ ํฐํธ ๋ก๋, ์์ ์ ํธ๋ฆฌํฐ)์ ๊ฒฝ์ฐ, ๋ผ์ด์ ์ค๊ฐ ํ์ฉํ๋ค๋ฉด ์์ฒด ํธ์คํ ์ ๊ณ ๋ คํ์ญ์์ค. ์ด๋ ์บ์ฑ, ์ ๋ฌ, ๋ฒ์ ๊ด๋ฆฌ์ ๋ํ ๋ ๋ง์ ์ ์ด๊ถ์ ์ ๊ณตํ์ง๋ง, ์ ๋ฐ์ดํธ ์ฑ ์์ ๋ณธ์ธ์๊ฒ ์์ต๋๋ค.
- ์ฑ๋ฅ ์์ฐ ์ค์ : ํ์ฉ ๊ฐ๋ฅํ ์ต๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํฌ๊ธฐ ๋ฐ ์คํ ์๊ฐ์ ๋ํ ์์ฐ์ ์ค์ ํ์ญ์์ค. ์ด ์์ฐ์ ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํ์ฌ ์ฑ๋ฅ ๋ชฉํ์ ๊ณผ๋ํ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ์ญ์์ค.
์ค์ฉ์ ์์ ๋ฐ ๊ธ๋ก๋ฒ ๊ณ ๋ ค์ฌํญ
๊ธ๋ก๋ฒ ๊ด์ ์ ์ผ๋์ ๋๊ณ ๋ช ๊ฐ์ง ๊ฐ๋ ์ ์๋๋ฆฌ์ค๋ฅผ ํตํด ์ด๋ฌํ ๊ฐ๋ ์ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค:
์ ํฅ ์์ฅ์ ์ ์์๊ฑฐ๋ ํ๋ซํผ
3G ๋๋ ์ฌ์ง์ด 2G ๋คํธ์ํฌ ์ฐ๊ฒฐ๊ณผ ๊ตฌํ ์ค๋งํธํฐ ๋ชจ๋ธ์ด ๋๋ฆฌ ๋ณด๊ธ๋ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ๋์์ผ๋ก ํ๋ ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ๋ฅผ ์๊ฐํด ๋ณด์ญ์์ค. ์ด๊ธฐ ํ์ด์ง์ ํฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค(์: ์์ถ ํ 500KB ์ด์)์ ๋ก๋ํ๋ ์ฌ์ดํธ๋ ์ฌ์์ด ๋ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๋น ํฐ์ ํ๋ฉด, ๊ธด ๋ก๋ฉ ์คํผ๋, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ธ ์ข์ ๊ฐ์ ๊ฒฝํํ ๊ฒ์ ๋๋ค. ์ด ์๋ฐ์คํฌ๋ฆฝํธ์ ์๋น ๋ถ๋ถ์ด ๋ถ์, ๊ฐ์ธํ ์์ง ๋๋ ๋ฌด๊ฑฐ์ด ์ฑํ ์์ ฏ์ด๋ผ๋ฉด FCP์ LCP์ ์ฌ๊ฐํ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ์ต์ ํ: ์ ํ ํ์ด์ง, ์นดํ
๊ณ ๋ฆฌ ํ์ด์ง, ๊ฒฐ์ ๊ณผ์ ์ ๋ํด ๊ณต๊ฒฉ์ ์ธ ์ฝ๋ ๋ถํ ์ ๊ตฌํํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ํธ์์ฉ ์๋๋ฅผ ๋ณด์ด๊ฑฐ๋ ์๋นํ ์ง์ฐ ํ์ ์ฑํ
์์ ฏ์ ์ง์ฐ ๋ก๋ฉํฉ๋๋ค. ๋ถ์ ์คํฌ๋ฆฝํธ์๋
defer
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํต์ฌ ์ ํ ์ด๋ฏธ์ง์ ์ค๋ช ๋ ๋๋ง์ ์ฐ์ ์์๋ก ๋ก๋๋ค.
์๋ง์ ์์ ๋ฏธ๋์ด ์์ ฏ์ด ์๋ ๋ด์ค ํฌํธ
๊ธ๋ก๋ฒ ๋ด์ค ํฌํธ์ ์ข ์ข ๋ค์ํ ์ ๊ณต์ ์ฒด์ ๋ง์ ์๋ํํฐ ์์ ๋ฏธ๋์ด ๊ณต์ ๋ฒํผ, ๋๊ธ ์น์ , ๋น๋์ค ์๋ฒ ๋๋ฅผ ํตํฉํฉ๋๋ค. ์ด๋ค์ด ๋๊ธฐ์ ์ผ๋ก ์ต์ ํ ์์ด ๋ก๋๋๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก๋ฅผ ์ฌ๊ฐํ๊ฒ ๋ถํ๋ ค ๋๋ฆฐ ํ์ด์ง ๋ก๋ฉ๊ณผ ์ง์ฐ๋ TTI๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ์ต์ ํ: ๋ชจ๋ ์์
๋ฏธ๋์ด ์คํฌ๋ฆฝํธ์
async
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๊ธ ์น์ ๊ณผ ๋น๋์ค ์๋ฒ ๋๋ฅผ ์ง์ฐ ๋ก๋ฉํ์ฌ ์ฌ์ฉ์๊ฐ ๋ทฐ๋ก ์คํฌ๋กคํ ๋๋ง ๋ก๋๋๋๋ก ํฉ๋๋ค. ํด๋ฆญ ์์๋ง ์ ์ฒด ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋ ๋ ๊ฐ๋ฒผ์ด ๋ง์ถคํ ๊ณต์ ๋ฒํผ ์ฌ์ฉ์ ๊ณ ๋ คํฉ๋๋ค.
๋๋ฅ ๊ฐ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA) ์ด๊ธฐ ๋ก๋
React, Angular ๋๋ Vue๋ก ๊ตฌ์ถ๋ SPA๋ ์๋นํ ์ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ๊ฐ์ง ์ ์์ต๋๋ค. ํ์ ํ์์ ๋น ๋ฅด์ง๋ง, ์ฒซ ๋ก๋๋ ๊ณ ํต์ค๋ฌ์ธ ์ ์์ต๋๋ค. ๊ด์ฌ์ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ๋ถ๋ฏธ ์ฌ์ฉ์๋ ๊ฑฐ์ ๋์น์ฑ์ง ๋ชปํ ์ ์์ง๋ง, ๋ถ์์ ํ ๋ชจ๋ฐ์ผ ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ ๋๋จ์์์ ์ฌ์ฉ์๋ ์๋นํ ๋ค๋ฅธ ์ฒซ์ธ์์ ๊ฒฝํํ ๊ฒ์ ๋๋ค.
- ์ต์ ํ: ์ด๊ธฐ ์ฝํ
์ธ ์ ๋ํด ์๋ฒ ์ธก ๋ ๋๋ง(SSR) ๋๋ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG)์ ๊ตฌํํ์ฌ ์ฆ๊ฐ์ ์ธ FCP์ LCP๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ผ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ์ฒ๋ฆฌ๋ฅผ ์๋ฒ๋ก ์ด์ ํฉ๋๋ค. ์ด๋ฅผ ๋ค๋ฅธ ๊ฒฝ๋ก ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ๊ณต๊ฒฉ์ ์ธ ์ฝ๋ ๋ถํ ๊ณผ ๊ฒฐํฉํ๊ณ , ์ฃผ ์ ํ๋ฆฌ์ผ์ด์
์
ธ์ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํด
<link rel="preload">
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๊ธฐ ํ์ด๋๋ ์ด์ ์ ๋ฌด๊ฑฐ์ด ํด๋ผ์ด์ธํธ ์ธก ๊ณ์ฐ์๋ ์น ์์ปค๊ฐ ์ฌ์ฉ๋๋๋ก ํฉ๋๋ค.
์ง์์ ์ธ ์ฑ๋ฅ ์ธก์ ๋ฐ ๋ชจ๋ํฐ๋ง
์ต์ ํ๋ ์ผํ์ฑ ์์ ์ด ์๋๋ผ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์งํํ๊ณ , ์์กด์ฑ์ ๋ณ๊ฒฝ๋๋ฉฐ, ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ ์ธ๊ณ์ ์ผ๋ก ๋ณ๋ํฉ๋๋ค. ์ง์์ ์ธ ์ธก์ ๊ณผ ๋ชจ๋ํฐ๋ง์ด ํ์์ ์ ๋๋ค.
- ๋ฉ ๋ฐ์ดํฐ ๋ ํ๋ ๋ฐ์ดํฐ:
- ๋ฉ ๋ฐ์ดํฐ: ํต์ ๋ ํ๊ฒฝ(์: Lighthouse, WebPageTest)์์ ์์ง๋ฉ๋๋ค. ๋๋ฒ๊น ๋ฐ ํน์ ๋ณ๋ชฉ ํ์ ์๋ณ์ ํ์ํฉ๋๋ค.
- ํ๋ ๋ฐ์ดํฐ(์ค์ฌ์ฉ์ ๋ชจ๋ํฐ๋ง - RUM): ์ฌ์ดํธ์ ์ํธ์์ฉํ๋ ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ์์ง๋ฉ๋๋ค(์: Google Analytics, ๋ง์ถคํ RUM ์๋ฃจ์ ). ์ ์ธ๊ณ์ ๋ค์ํ ์ฌ์ฉ์ ์ธ๊ตฌ ํต๊ณ, ์ฅ์น, ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ฑธ์น ์ค์ ์ฑ๋ฅ์ ์ดํดํ๋ ๋ฐ ํ์์ ์ ๋๋ค. RUM ๋๊ตฌ๋ ์ค์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ํ FCP, LCP, FID, CLS ๋ฐ ๊ธฐํ ๋ง์ถคํ ์งํ๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉ: ์ง์์ ํตํฉ/์ง์์ ๋ฐฐํฌ ์ํฌํ๋ก์ฐ์ ์ผ๋ถ๋ก ์ฑ๋ฅ ๊ฒ์ฌ๋ฅผ ์๋ํํฉ๋๋ค. Lighthouse CI์ ๊ฐ์ ๋๊ตฌ๋ ๋ชจ๋ ํ ๋ฆฌํ์คํธ๋ ๋ฐฐํฌ์ ๋ํด ์ฑ๋ฅ ๊ฐ์ฌ๋ฅผ ์คํํ์ฌ ํ๊ท๊ฐ ํ๋ก๋์ ์ ๋๋ฌํ๊ธฐ ์ ์ ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์์ฐ ์ค์ : ํน์ ์ฑ๋ฅ ๋ชฉํ(์: ์ต๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค ํฌ๊ธฐ, ๋ชฉํ FCP/LCP/TTI ๊ฐ)๋ฅผ ์ค์ ํ๊ณ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์ ์กฐํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๊ธ๋ก๋ฒ ์ํฅ
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ์ต์ ํ๋ฅผ ์ํํ ํ ๊ฒฐ๊ณผ๋ ๋จ์ํ ๊ธฐ์ ์ ๊ฒฐํจ์ ํจ์ฌ ๋ฐ์ด๋์ต๋๋ค:
- ๋ค์ํ ์ฌ์ฉ์๋ฅผ ์ํ ์ ๊ทผ์ฑ: ๋๋ฆฐ ์น์ฌ์ดํธ๋ ๋์ญํญ์ด ์ ํ์ ์ด๊ฑฐ๋, ๋ฐ์ดํฐ ์๊ธ์ ๊ฐ ๋น์ธ๊ฑฐ๋, ๊ตฌํ์ ์ ์ฑ๋ฅ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์์๊ฒ ๋ถ๊ท ํ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ต์ ํํ๋ฉด ๋ ๋์ ๊ธ๋ก๋ฒ ์ธ๊ตฌ ํต๊ณ์ ๋ํด ์ฌ์ดํธ๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ์ ์ง๋ฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ๋ฐ ์ฐธ์ฌ๋: ๋น ๋ฅด๊ณ ๋ฐ์์ด ์ข์ ์น์ฌ์ดํธ๋ ๋ ๋์ ์ฌ์ฉ์ ๋ง์กฑ๋, ๋ ๊ธด ์ธ์ ์๊ฐ, ์ฆ๊ฐ๋ ์ฐธ์ฌ๋๋ก ์ด์ด์ง๋๋ค. ๋ฐ๋๋ก ๋๋ฆฐ ํ์ด์ง๋ ๋ฌธํ์ ๋งฅ๋ฝ์ ๊ด๊ณ์์ด ์ข์ ๊ฐ, ์ดํ๋ฅ ์ฆ๊ฐ, ์ฌ์ดํธ ์ฒด๋ฅ ์๊ฐ ๊ฐ์๋ก ์ด์ด์ง๋๋ค.
- ๊ฒ์ ์์ง ์ต์ ํ(SEO): ๊ฒ์ ์์ง, ํนํ Google์ ํ์ด์ง ์๋์ ์ฝ์ด ์น ๋ฐ์ดํ์ ์์ ์์๋ก ์ ์ ๋ ๋ง์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ ์กฐํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๊ฒ์ ์์์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์ณ ์ ์ธ๊ณ์ ์ผ๋ก ์ ๊ธฐ์ ํธ๋ํฝ์ ๊ฐ์์ํฌ ์ ์์ต๋๋ค.
- ๋น์ฆ๋์ค ์งํ: ์ ์์๊ฑฐ๋ ์ฌ์ดํธ, ์ฝํ ์ธ ๊ฒ์์ ๋๋ SaaS ํ๋ซํผ์ ๊ฒฝ์ฐ, ํฅ์๋ ์ฑ๋ฅ์ ๋ ๋์ ์ ํ์จ, ๋ ๋์ ์์ต, ๋ ๊ฐํ ๋ธ๋๋ ์ถฉ์ฑ๋์ ์ง์ ์ ์ธ ์๊ด๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋ชจ๋ ์ง์ญ์์ ๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๋ ์ฌ์ดํธ๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ ์ ์ ํ๋ฉ๋๋ค.
- ์์ ์๋น: ๋ ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ ํจ์จ์ ์ธ ์คํ์ ์ฌ์ฉ์ ์ฅ์น์ CPU ๋ฐ ๋ฐฐํฐ๋ฆฌ ์๋น๋ฅผ ์ค์ด๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์ด๋ ๋ชจ๋ ์ฌ์ฉ์, ํนํ ์ ์์ด ์ ํ์ ์ด๊ฑฐ๋ ์ค๋๋ ํ๋์จ์ด๋ฅผ ๊ฐ์ง ์ฌ์ฉ์์๊ฒ ์ฌ๋ ค ๊น์ ์ธก๋ฉด์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ฑ๋ฅ์ ๋ฏธ๋ ๋ํฅ
์น ์ฑ๋ฅ์ ํ๊ฒฝ์ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ค์ ๊ฒฝ๋ก์ ๋ฏธ์น๋ ์ํฅ์ ๋์ฑ ์ค์ด๋ ํ์ ์ ์ฃผ๋ชฉํ์ญ์์ค:
- WebAssembly (Wasm): ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ๋ํด ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์ฑ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ C++, Rust ๋๋ Go์ ๊ฐ์ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ์น์์ ์คํํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์คํ ์๋๊ฐ ๋ณ๋ชฉ ํ์์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ผ๋ถ์ ๋ํ ๊ฐ๋ ฅํ ๋์์ด ๋ ์ ์์ต๋๋ค.
- Partytown: ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ฅผ ์น ์์ปค๋ก ์ด๋์์ผ ๋ฉ์ธ ์ค๋ ๋์์ ์คํ๋ก๋ํ๊ณ ์ฑ๋ฅ ์ํฅ์ ํฌ๊ฒ ์ค์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ํด๋ผ์ด์ธํธ ํํธ: ์๋ฒ๊ฐ ์ฌ์ฉ์์ ์ฅ์น, ๋คํธ์ํฌ, ์ฌ์ฉ์ ์์ด์ ํธ ์ ํธ๋๋ฅผ ์ฌ์ ์ ์ดํดํ ์ ์๋๋ก ํ๋ HTTP ํค๋ ํ๋ ์ธํธ๋ก, ๋ ์ต์ ํ๋ ๋ฆฌ์์ค ์ ๋ฌ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค(์: ๋๋ฆฐ ์ฐ๊ฒฐ์ ์ฌ์ฉ์์๊ฒ ๋ ์์ ์ด๋ฏธ์ง๋ ๋ ์ ์ ์คํฌ๋ฆฝํธ ์ ๊ณต).
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ์ค์ ๊ฒฝ๋ก ๋ถ์์ ๋๋ฆฐ ์น ์ฑ๋ฅ์ ๊ทผ๋ณธ ์์ธ์ ๋ฐ๊ฒฌํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ๋ก ์ ๋๋ค. ๋ ๋๋ง ์ฐจ๋จ ์คํฌ๋ฆฝํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์๋ณํ๊ณ , ํ์ด๋ก๋ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ , ์คํ์ ์ต์ ํํ๊ณ , ๋ฆฌ์์ค๋ฅผ ์ ๋ต์ ์ผ๋ก ๋ก๋ฉํจ์ผ๋ก์จ ์น์ฌ์ดํธ์ ์๋์ ์๋ต์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋จ์ง ๊ธฐ์ ์ ์ธ ์ฐ์ต์ด ์๋๋ผ, ๋ชจ๋ ์ฌ๋, ๋ชจ๋ ๊ณณ์ ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ฒ ๋ค๋ ์ฝ์์ ๋๋ค. ์ง์ ์ผ๋ก ๊ธ๋ก๋ฒํ ์น์์ ์ฑ๋ฅ์ ๋ณดํธ์ ์ธ ๊ณต๊ฐ์ ๋๋ค.
์ค๋๋ถํฐ ์ด๋ฌํ ์ ๋ต์ ์ ์ฉํ๊ธฐ ์์ํ์ญ์์ค. ์ฌ์ดํธ๋ฅผ ๋ถ์ํ๊ณ , ์ต์ ํ๋ฅผ ๊ตฌํํ๊ณ , ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ญ์์ค. ๋น์ ์ ์ฌ์ฉ์, ๋น์ฆ๋์ค, ๊ทธ๋ฆฌ๊ณ ๊ธ๋ก๋ฒ ์น์ด ๋น์ ์๊ฒ ๊ฐ์ฌํ ๊ฒ์ ๋๋ค.