์น ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ทน๋ํํ๊ธฐ ์ํด ์ฑ๋ฅ ์ต์ ํ๊ฐ ๊ผญ ํ์ํ๋ค๊ณ ์๊ฐํ๋ค.
์๋น์ค๋ฅผ ์ฌ์ฉํ ๋, ๋๋ฆฐ ๋ก๋ฉ ์๋์ ์ฑ๋ฅ์ด ์ ํ๋๋ ๋ถํ์ํ ์์ ๋ญ๋น๋ ์ฌ์ฉ์๋ก ํ์ฌ๊ธ ์ข์ง ์์ ๊ฒฝํ์ ๋จ๊ธฐ๊ณ , ์ด๋ฐ ๊ฒฝํ์ ์ฌ์ฉ์๋ก ํ์ฌ๊ธ ์๋น์ค๋ฅผ ์ดํํ๊ฒ๋ ๋ง๋๋ ์ฃผ์ ์์ธ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ์น ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ต์ ํ์ ๋ํด ๊ฐ๋จํ ์์๋ณด๋ ค๊ณ ํ๋ค.
1. ์ด๊ธฐ ๋ก๋ฉ ์ต์ ํ
์ฝ๋ ๋ถํ (Code Splitting): ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ์ฒญํฌ๋ก ๋๋์ด ํ์ํ ๋ถ๋ถ๋ง ๋ก๋ํ๋ค. Webpack, Rollup ๋ฑ์ ๋ฒ๋ค๋ฌ์์ dynamic import๋ฅผ ํ์ฉํ์ฌ ํ์ํ ๋ถ๋ถ์์๋ง ํ์ผ์ ์ฌ์ฉํ์ฌ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
Lazy Loading: ์ด๋ฏธ์ง๋ ๋น๋์ค ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ํ์ํ ๋ ๋ก๋ํ๋ค. ํ์ํ์ง ์์ ํ์ด์ง์์๋ ๋ก๋๋์ง ์์ผ๋ฉฐ, `loading="lazy"` ์์ฑ์ ์ฌ์ฉํ๊ฑฐ๋ Intersection Observer API๋ฅผ ํ์ฉํด ์ฌ์ฉ์๊ฐ ํด๋น ๋ทฐํฌํธ๋ก ์ด๋(ํฌ์ปค์ฑ)ํ๊ธฐ ์ ๊น์ง ๋ถํ์ํ ๋ฆฌ์์ค ๋ก๋๋ฅผ ์ค์ธ๋ค.
Tree Shaking: ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ค์ธ๋ค. ES6 ๋ชจ๋์ ์ฌ์ฉํ๊ณ ๋ฒ๋ค๋ฌ ์ค์ ์์ tree shaking์ ํ์ฑํํ์ฌ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ ๋ฒ๋ค์ ํฌํจ์ํค์ง ์๋๋ก ํ์ฌ ๋ฒ๋ค ํ์ผ์ ์ฌ์ด์ฆ๋ฅผ ํจ์จ์ ์ผ๋ก ์ค์ผ ์ ์๋ค.
2. ๋ฐํ์ ์ฑ๋ฅ ์ต์ ํ
DOM ์กฐ์ ์ต์ํ: DOM ์
๋ฐ์ดํธ๋ ๋ธ๋ผ์ฐ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ์ต์ํ๊ฐ ์ค์ํ๋ค. Virtual DOM์ ์ฌ์ฉํ๋ React ๋ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ๊ฑฐ๋ DOM ๋ณ๊ฒฝ์ batch๋ก ๋ฌถ์ด์ ์ฒ๋ฆฌํ์ฌ DOM์กฐ์์ ์ต์ํ ํ๋ ์ ๋ต์ ํตํด DOM์
๋ฐ์ดํธ๋ก ์ธํ ์ฑ๋ฅ์ ํ๋ฅผ ๋ฐฉ์งํด์ผํ๋ค.
Debounce์ Throttle ์ฌ์ฉ: ์ฌ์ฉ์ ์
๋ ฅ ์ด๋ฒคํธ(์คํฌ๋กค, ์
๋ ฅ ๋ฑ)์ ๊ณผ๋ํ ํธ์ถ์ ์ ํํ๋ค. Debounce๋ ๋ค์ค ์ด๋ฒคํธ๊ฐ ๊ฐ์ง๋ ๋ ๋ง์ง๋ง ์ด๋ฒคํธ๋ฅผ 1ํ๋ง ๋ณด๋ด๋ ๊ฒ์ด๊ณ , Throttle์ ์ผ์ ๊ธฐ๊ฐ(์๊ฐ)์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ์ฌ ๋ญ์ณ์ ๋ณด๋ด๋ ๊ธฐ์ ์ด๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค
3. ๋คํธ์ํฌ ์ต์ ํ
๋ฆฌ์์ค ์์ถ: Gzip์ด๋ Brotli๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ๋๋ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ธ๋ค. ์๋ฒ์์ ์์ถ ์ค์ ์ ํ์ฑํํด์ผ ํ๋ค.
CDN(Content Delivery Network) ์ฌ์ฉ: ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ์๋ฒ๋ฅผ ํตํด ์ฌ์ฉ์์ ๊ฐ๊น์ด ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ค.
HTTP/2์ HTTP/3 ์ฌ์ฉ: ๋ค์ค ์์ฒญ์ ํ๋์ ์ฐ๊ฒฐ์์ ์ฒ๋ฆฌํ์ฌ ๋คํธ์ํฌ ๋ณ๋ชฉ์ ์ค์ธ๋ค.
4. ์ด๋ฏธ์ง ์ต์ ํ
์ด๋ฏธ์ง ํฌ๋งท ์ต์ ํ: WebP, AVIF์ ๊ฐ์ ์ต์ ์ด๋ฏธ์ง ํฌ๋งท์ ์ฌ์ฉํ๊ณ ์ด๋ฏธ์ง ์ต์ ํ ๋๊ตฌ๋ฅผ ํ์ฉํด ์ฉ๋์ ์ค์ธ๋ค.
Responsive Images ์ฌ์ฉ: ์ฌ์ฉ์ ๋๋ฐ์ด์ค์ ์ ํฉํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ค. srcset๊ณผ sizes ์์ฑ์ ํ์ฉํ์ฌ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋์ํ๋ค.
5. ๋ก๋ฉ ์๋ ์ธก์ ๊ณผ ๋ชจ๋ํฐ๋ง
Lighthouse: Chrome DevTools์์ ์ฑ๋ฅ ์ ์๋ฅผ ์ธก์ ํ๊ณ ๊ฐ์ ํด์ผํ ๋ถ๋ถ์ ๋ํ ๋ฐฉํฅ์ ํ์ธํ๋ค.
Web Vitals: ์ฌ์ฉ์ ๊ฒฝํ ์งํ(LCP, FID, CLS)๋ฅผ ๋ถ์ํ๊ณ Google Analytics ๋๋ Web Vitals ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฑ์ ํ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ๋ค.
Real User Monitoring(RUM): ์ค์ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ฌ ๋ฌธ์ ๋ฅผ ํ์
ํ๊ณ ๊ทธ์ ๋ง์ถฐ ์ฑ๋ฅ์ ์ต์ ํํ๋ค. Datadog, New Relic๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๊ฒฐ๋ก
์น ํ๋ก ํธ์๋ ์ฑ๋ฅ ์ต์ ํ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ณ , ๋น์ฆ๋์ค ์ฑ๊ณผ๋ฅผ ๋์ด๋ ์ค์ํ ์์
์ด๋ค. ์์์ ์๊ฐํ ๋ฐฉ๋ฒ๋ค์ ํ๋์ฉ ์ ์ฉํด ๋ณด๊ณ ์ค์ ์๋ ์ธก์ ๋ฐ ๋ชจ๋ํฐ๋ง๋ฑ์ ํตํด ๊ฐ๊ฐ์ ์๋น์ค์ ๋ง๋ ํจ์จ์ ์ด๊ณ ๋น ๋ฅธ ์น ์๋น์ค๋ฅผ ๊ณ ๋ฏผํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
'WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ WEB ] ์นํ๋ก ํธ์๋์์ ์ฑ ์ฑ๋ฅ ์ต์ ํ ํ๋ ๋ค์ํ ๋ฐฉ๋ฒ (0) | 2024.09.01 |
---|---|
[ WEB ] iOS์์ SVG ์ด๋ฏธ์ง๊ฐ ๊นจ์ ธ ๋ณด์ผ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ (0) | 2024.04.28 |
[ WEB API ] Geolocation API๋ฅผ ํตํด ์์น ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ. (0) | 2023.11.20 |
[ LocalStorage ] localStorage์์ ๋ฐฐ์ด(Array)๋ค๋ฃจ๊ธฐ. (0) | 2023.08.06 |
[ CSS ] white-space ์์ฑ (0) | 2023.07.31 |