๐ ์ด์ ํ๋ก์ ํธ๊น์ง ๋จ์ ์๊ฐ์ด 2์ฃผ์ ๋ ๋จ์๋ค.... ์ด๋ค ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ํด๋ผ์ ์๋๋ก ํด๋ณด์!
๐ ์ค๋ ํ์ตํ ๋ด์ฉ
์ต์ ํ(Optimization)
์ฃผ์ด์ง ์ํฉ์์ ์ํ๋ ๊ฐ์ฅ ์๋ง์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์
ํ์ฉ๋ ์์์ ํ๊ณ ๋ด์์ ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํค๋ฉด์ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ณผ์
์ต์ ํ์ ํ์์ฑ ๋ฐ ํจ๊ณผ
- ์ดํ๋ฅ ๊ฐ์
- ์น ๊ฐ๋ฐ์์์ ์ต์ ํ๋ ํ๋ฉด์ ์ต๋ํ ๋น ๋ฅธ ์๋๋ก ํ์ํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
- ํ์ด์ง ๋ก๋๊ฐ 3์ด์ด์ ๊ฑธ๋ฆฌ๋ฉด 53%์ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ์ดํํ๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ฉด์ ๋ถ๋ฌ์ค๋ ์๊ฐ์ ์งง๊ฒ ํ์ฌ ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ดํํ ํ๋ฅ ์ ๋ฎ์ถ ์ ์๋ค.
- ์ ํ์จ ์ฆ๊ฐ
- ์ดํ๋ฅ ์ด ์ค์ด๋๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ํฉ์จ์ด ๋์์ง ํ๋ฅ ์ด ์ปค์ง๋ค.
- ์ ํ์จ: ์น ์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ ์ฌ์ฉ์ ์ค ํ์๊ฐ์ , ์ํ ๊ตฌ๋งค, ๊ฒ์๊ธ ์กฐํ, ๋ค์ด๋ก๋ ๋ฑ์ ํ์๋ฅผ ํ ๋ฐฉ๋ฌธ์์ ๋น์จ์ ์๋ฏธ
- ์์ต ์ฆ๋
- ๋น ๋ฅธ ์น ์ฌ์ดํธ์ ๋ก๋ฉ ์๋๋ ์ดํ๋ฅ ๊ฐ์, ์ ํ์จ ์ฆ๊ฐ, ํธ๋ํฝ ์ฆ๋, ํ์ ์ ์ฆ๊ฐ๋ก ๊ณง ์์ต์ ์ฆ๋๋ฅผ ์๋ฏธํ๋ค.
- ์ค์ ์ฌ๋ก๋ก ์๋ง์กด ๋ก๋ฉ ์๋๊ฐ 1์ด ๋นจ๋ผ์ก์ ๋ ์๋ง์กด ํ๋งค๋์ 1%, ๊ตฌ๊ธ ๊ฒ์๋์ 0.2%๊ฐ ์ฆ๋ํ๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ(UX) ํฅ์
- ์ต์ ํ๋ ํจ๊ณผ์ ์ธ UX ๊ฐ์ ์๋จ์ด๋ค.
- ๋ก๋ฉ์ด ์ค๋ ๊ฑธ๋ฆด ๊ฒฝ์ฐ ์คํผ๋, ํ๋ก๊ทธ๋ ์ค๋ฐ ๊ฐ์ด ๋ก๋ฉ ์ค์์ ์๋ ค์ฃผ๋ UI๋ฅผ ๋จผ์ ํ์ํ์ฌ ์ฌ์ฉ์๊ฐ ์ธ๋ด์ฌ์ ๊ฐ๊ณ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
HTML, CSS ์ฝ๋ ์ต์ ํ ํ๊ธฐ
- ํ๋ฉด์ ๋ ๋๋ง ํ ๋ ํ์ํ HTML, CSS ํ์ผ์ ์ฝ๋๋ฅผ ์ต์ ํํจ์ผ๋ก์จ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์๋ค.
HTML ์ต์ ํ ๋ฐฉ๋ฒ
- DOM ํธ๋ฆฌ ๊ฐ๋ณ๊ฒ ๋ง๋ค๊ธฐ
- DOM ํธ๋ฆฌ๊ฐ ๊น์์๋ก, ์์ ์์๊ฐ ๋ง์์๋ก DOM ํธ๋ฆฌ์ ๋ณต์ก๋๋ ์ปค์ง๋ค. ๋ณต์ก๋๊ฐ ํด ์๋ก DOM ํธ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋์์ ๋ ๊ณ์ฐํด์ผ ํ๋ ๊ฒ์ด ๋ง์์ง์ผ๋ก ๋ถํ์ํ ์์๋ฅผ ์ญ์ ํ๋ค.
- ์ธ๋ผ์ธ ์คํ์ผ ์ฌ์ฉํ์ง ์๊ธฐ
- ์ธ๋ผ์ธ ์คํ์ผ์ ๊ฐ๋ณ ์์์ ์คํ์ผ ์์ฑ์ ์์ฑํด์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํด๋์ค๋ก ๋ฌถ์ด์ ํ ๋ฒ์ ์์ฑํด๋ ๋ ์คํ์ผ ์์ฑ์ ์ค๋ณต์ผ๋ก ์์ฑํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ๋๋ฐ ์ด์ฒ๋ผ ๋ถํ์ํ ์ฝ๋ ์ค๋ณต์ ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ฆฌ๋ฉฐ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ฆ๊ฐ ์ํจ๋ค.
- CSS ํ์ผ์ ๋ฐ๋ก ์์ฑํ๋ฉด ๋จ ํ ๋ฒ์ ๋ฆฌํ๋ก์ฐ๋ง ๋ฐ์ํ์ฌ ๋ ๋๋ง ์๋ฃ ์์ ์ ๋จ์ถ์ํจ๋ค.
CSS ์ต์ ํ ๋ฐฉ๋ฒ
- ์ฌ์ฉํ์ง ์๋ CSS ์ ๊ฑฐํ๊ธฐ
- CSS ํ์ผ์ ๋ชจ๋ ์ฝ๋์ ๋ถ์์ด ๋๋ ํ์ CSSOM ํธ๋ฆฌ๊ฐ ์์ฑ๋๋๋ฐ ์ด๋ ๋ถํ์ํ CSS ์ฝ๋๊ฐ ์๋ค๋ฉด CSSOM ํธ๋ฆฌ์ ์์ฑ์ด ๋ฆ์ด์ง๋ค.
- ์์ ๋จ์ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ CSS ์ฝ๋๋ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข๋ค.
- ๊ฐ๊ฒฐํ ์
๋ ํฐ ์ฌ์ฉํ๊ธฐ
- ์ ๋ ํฐ๊ฐ ๋ณต์กํ ์๋ก ์คํ์ผ ๊ณ์ฐ๊ณผ ๋ ์ด์์์ ์๊ฐ์ ๋ ๋ง์ด ์๋ชจํ๊ฒ ๋๋ฏ๋ก ๊ฐ๊ฒฐํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ฆฌ์์ค ๋ก๋ฉ ์ต์ ํํ๊ธฐ
- CSS ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
- CSSOM ํธ๋ฆฌ๋ CSS ์ฝ๋๋ฅผ ๋ชจ๋ ํด์ํด์ผ ๊ตฌ์ฑํ ์ ์์ผ๋ฏ๋ก ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ๋น ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์๋๋ก HTML ๋ฌธ์ ์ต์๋จ์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ข๋ค.
- JavaScript ํ์ผ ๋ถ๋ฌ์ค๊ธฐ
- JavaScript ํ์ผ์ ๋ค์ด๋ฐ์์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ค์ด๋ก๋ ๋ฐ ์คํฌ๋ฆฝํธ ์คํ์ด ์๋ฃ๋ ๋๊น์ง DOM ์์ฑ์ด ์ค๋จ๋๋ค. ์ด ์๊ฐ๋งํผ ๋ ๋๋ง ์๋ฃ ์๊ฐ์ด ๋ฆ์ถฐ์ง๊ฒ ๋๋ฏ๋ก JavaScript ํ์ผ์ DOM ํธ๋ฆฌ ์์ฑ์ด ์๋ฃ๋๋ ์์ ์ธ HTML ๋ฌธ์ ์ตํ๋จ์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ข๋ค.
๋ธ๋ผ์ฐ์ ์ด๋ฏธ์ง ์ต์ ํํ๊ธฐ
- ํ์ด์ง์ ๋๋ถ๋ถ์ ์ฉ๋์ ์ฝ๋๊ฐ ์๋ ์ด๋ฏธ์ง ํ์ผ, ๋ฏธ๋์ด ํ์ผ์ด ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ ์ค์ด๊ฑฐ๋ ์์ฒญ์ ์๋ฅผ ์ค์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ๋น ๋ฅด๊ฒ ๊ฐ์ ํ ์ ์๋ค.
- ์ด๋ฏธ์ง ์คํ๋ผ์ดํธ
- ๋ฐ์ค์ ํ์ํ ์์ด์ฝ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์ ์์ฒญํ ๊ฒฝ์ฐ ์น ์ฌ์ดํธ์ ๋ก๋ฉ์๊ฐ์ด ๋์ด๋๊ฒ ๋ ๋ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ
- ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ชจ์ ํ๋์ ์คํ๋ผ์ดํธ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ณ CSS์ background-position ์์ฑ์ ์ฌ์ฉํด ์ด๋ฏธ์ง์ ์ผ์ ๋ถ๋ถ๋ง ํด๋์ค ๋ฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ์์ด์ฝ ํฐํธ ์ฌ์ฉํ๊ธฐ
์์ด์ฝ ์ฌ์ฉ์ด ๋ง์ ๋, ๋ชจ๋ ์์ด์ฝ์ ์ด๋ฏธ์ง๋ก ์ฌ์ฉํ์ง ์๊ณ ์์ด์ฝ ํฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฉ๋์ ์ค์ผ ์ ์๋ค.(Font Awesome)- CDN์ผ๋ก ์ฌ์ฉํ๊ธฐ
- Font Awesome์ ๊ฐ์ ํ ๋ ๋ฐ๊ธ๋ฐ์ ํคํธ๋ฅผ HTML ํ์ผ head ์์์ ๋ฃ์ด์ฃผ๋ฉด CDN์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- Font Awesome ๋ชจ๋ ์ค์นํ๊ธฐ
- CDN์ผ๋ก ์ฌ์ฉํ๊ธฐ
WebP ๋๋ AVIF ์ด๋ฏธ์ง ํฌ๋งท ์ฌ์ฉํ๊ธฐ
- ์ ํต์ ์ธ ์ด๋ฏธ์ง ํฌ๋งท ๋ฐฉ์์ JPEG, PNG ํ์์ด ์๋ ์๋กญ๊ฒ ๋ฑ์ฅํ WebP, AVIF๋ฅผ ์ฌ์ฉํ์ฌ ์ฉ๋์ ๋์ฑ ๊ฐ์์ํฌ ์ ์๋ค.(20~35%)
- ํ์ง๋ง, ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ํธํ๋์ง ์๋๋ค๋ ๋จ์ ์ด ์์ง๋ง HTML์ picture ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ ๋ธ๋ผ์ฐ์ ์ ํธํ์ ๋ง๋๋ก ๋ถ๊ธฐ๋ฅผ ๋์ฒดํ ์ ์๋ค.
- *<picture>: img ์์์ ๋ค์ค ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ์ํ ์ปจํ ์ด๋๋ฅผ ์ ์ํ ๋ ์ฌ์ฉํ๋ค.
์บ์ ์ฌ์ฉํ๊ธฐ
- ์บ์๋ ๋ค์ด๋๋ฅด ๋ฐ์ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ ์์ ์ฅ์๋ฅผ ๋ปํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ๋ ๊ฐ์ ๋ค์ ๊ณ์ฐํ๋ ์๊ฐ์ ์ ์ฝํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ฉฐ, ํ์ํ ๋ฆฌ์์ค๋ฅผ ์บ์์์ ๊บผ๋ด์ ์ฌ์ฌ์ฉํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋คํธ์ํฌ ๋ฆฌ์์ค, ๋ก๋ฉ์๊ฐ์ ์ค์ผ ์ ์๋ค.
- HTTP ์์ฒญ์ ๋ณด๋ผ ๋ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋๋ฅผ ์์ฑํ์ฌ ์บ์๋ฅผ ์ฌ์ฌ์ฉํด๋ ๋๋์ง ํ์ธํ๋ฉด ๋๋ค.
- If-Modified-Since: ์บ์๋ ๋ฆฌ์์ค์ Last-Modified ๊ฐ ์ดํ์ ์๋ฒ ๋ฆฌ์์ค๊ฐ ์์ ๋์๋์ง ํ์ธํ๊ณ , ์์ ๋์ง ์์๋ค๋ฉด ์บ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ค.
- If-None-Match: ์บ์๋ ๋ฆฌ์์ค์ ETag ๊ฐ๊ณผ ํ์ฌ ์๋ฒ ๋ฆฌ์์ค์ ETag ๊ฐ์ด ๊ฐ์์ง ํ์ธํ๊ณ , ๊ฐ์ผ๋ฉด ์บ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ค.
CDN ์ฌ์ฉํ๊ธฐ
- CDN? ์ฝํ ์ธ ๋ฅผ ์ข ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ ๊ณตํ๊ธฐ ์ํด ์ค๊ณ๋์๋ค. ์ ์ ๊ฐ ๊ฐ๊น์ด ๊ณณ์ ์์นํ ๋ฐ์ดํฐ ์ผํฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋๊ธฐ ์ํด ๊ฑฐ์ณ์ผํ๋ ์๋ฒ์ ๊ฐฏ์๊ฐ ํฌ๊ฒ ์ค๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
- ์ฌ์ฉ๊ฐ๋ฅ ์๋น์ค
- CloudFront, Cloudflare ๋ฑ
ํธ๋ฆฌ์์ดํน(Tree Shaking)
๋๋ฌด๋ฅผ ํ๋ค์ด ์๊ฐ์ง๋ฅผ ํธ์ด๋ด๋ฏ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- JavaScript ํ์ผ์ ํฌ๊ธฐ
- JavaScript ํ์ผ ํฌ๊ธฐ์ ์ฆ๊ฐ, ์์ฒญ ํ์์ ์ฆ๊ฐ๋ ๋ ๋๋ง์ด ๋ฆ์ด์ง๋ค๋ ๊ฒ์ ๋ปํ๊ณ , ๋คํธ์ํฌ ์๋๊ฐ ๋๋ฆฐ ํ๊ฒฝ์์ ๋ ํฐ ๋ณ๋ชฉํ์์ ์ ๋ฐ ํฉ๋๋ค. ํธ๋ฆฌ์์ดํน์ ํตํด ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ฌ์ ์ต์ ํ๋ฅผ ์ํฌ ์ ์๋ค.
- JavaScript ํ์ผ์ ์คํ ์๊ฐ
- ๋ค์ด๋ก๋๋ถํฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์ฐ์ ์์ฒญ์ ๋ณด๋ด์ด ํ์ผ์ ๋ค์ด๋ฐ์ ์จ ๋ค์ ์์ถ์ ํด์ ํด์ผ ํ๊ณ , JS์ฝ๋๋ฅผ ํ์ฑํ์ฌ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค. ํ์ฑ์ด ๋๋๋ฉด ์ปดํ์ผ์ ์งํํ์ฌ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
- ํ์ผ์ด ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ์ ์ฐจ ๋์ด๋ ๋, ํธ๋ฆฌ์์ดํน์ ํตํด ์ต์ ํ๋ฅผ ํด์ผํ๋ค.
JavaScript ํธ๋ฆฌ์์ดํน
์นํฉ 4๋ฒ์ ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ES6 ๋ชจ๋์ ๋์์ผ๋ก ๊ธฐ๋ณธ์ ์ธ ํธ๋ฆฌ์์ดํน์ ์ ๊ณตํ๋ค.
- ํ์ํ ๋ชจ๋๋ง import ํ๊ธฐ
- import ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์์ ์ฌ์ฉํ ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ํ์ํ ๋ชจ๋๋ง ๋ถ๋ฌ์์ ํธ๋ฆฌ์์ดํน์ด ๊ฐ๋ฅํ๋ค.
- Babelrc ํ์ผ ์ค์ ํ๊ธฐ
- Babel์ JS ๋ฌธ๋ฒ์ด ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ํธํ์ด ๊ฐ๋ฅํ๋๋ก ES5 ๋ฌธ๋ฒ์ผ๋ก ๋ณํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ์ด๋, ES5๋ฌธ๋ฒ์ require๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ Babelrc ํ์ผ์ modules: false๋ก ์์ฑํ์ฌ ES5๋ฌธ๋ฒ์ผ๋ก ๋ณํ๋๋ ๊ฒ์ ๋ง์์ฃผ๋ฉด ๋๋ค.
- sideEffects ์ค์ ํ๊ธฐ
- ์นํฉ์ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ผ์ผํฌ ์ ์๋ ์ฝ๋์ ๊ฒฝ์ฐ, ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ผ๋ ํธ๋ฆฌ์์ดํน ๋์์์ ์ ์ธ์ํจ๋ค.
- package.json ํ์ผ์์ sideEffects:false๋ฅผ ์ค์ ํ์ฌ ์ฌ์ด๋ ์ดํํธ๊ฐ ์๊ธฐ์ง ์๋๋ค๊ณ ์๋ ค ์ฝ๋๋ฅผ ์ ์ธ์ํฌ ์ ์๋๋ก ํ๋ค.(sideEffects:false๋ ์ ์ฒด ํ์ผ์์์ ์ค์ ์ด๊ณ ํน์ ํ์ผ๋ง ์ค์ ํ ์๋ ์๋ค.)
- ES6 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ
- ES5 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋์ ํต์งธ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ES6 ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ถ๋ถ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
Lighthouse
- ๋ค์ํ ์งํ๋ฅผ ์ด์ฉํ์ฌ ์นํ์ด์ง์ ์ฑ๋ฅ ๊ฒ์ฌ๋ฅผ ํด์ค ๋ฟ๋ง ์๋๋ผ ๊ทธ์ ๋ํ ๊ฐ์ ์ฑ ์ ์ ๊ณตํ๋ค.
- ๊ตฌ๊ธ์์ ๊ฐ๋ฐ ํ ์คํ์์ค๋ก์ ์น ํ์ด์ง์ ํ์ง์ ๊ฐ์ ํ ์ ์๋ ์๋ํ ํด์ด๋ค.
- ์ฑ๋ฅ, ์ ๊ทผ์ฑ, PWA, SEO ๋ฑ์ ๊ฒ์ฌํ๋ฉฐ ์ด๋ฅผ ์ด์ฉํด ์ฌ์ฉ์๋ ์ด๋ค ์นํ์ด์ง๋ ํ์ง ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค.
Lighthouse ์์ํ๊ธฐ
- Chrome ๊ฐ๋ฐ์ ๋๊ตฌ์์ ์คํํ๊ธฐ
- ํฌ๋กฌ์์ ๊ฒ์ฌํ๊ณ ์ถ์ ํ์ด์ง์ url์ ์ ๋ ฅํ๋ค.
- ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฐ๋ค.
- lighthouse ํญ์ ํด๋ฆญํ๋ค.
- Generate report๋ฅผ ํด๋ฆญํ๋ค. (Categories์์ ํน์ ์งํ๋ง ์ ํํ์ฌ ๊ฒ์ฌํ ์๋ ์๋ค.)
- ๊ฒ์ฌ๊ฐ ์คํ ๋ ํ, ๊ฒฐ๊ณผ๊ฐ ํด๋น ํ์ด์ง์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ด์ ์์ฑ๋๋ค.
Node CLI์์ ์คํํ๊ธฐ
Lighthouse๋ฅผ ์ค์นํ๋ค. → ๋ช ๋ น์ด๋ก ๊ฒ์ฌ๋ฅด ์ํํ๋ค. → ๋ช ๋ น์ด๋ก ๋ชจ๋ ์ต์ ์ ๋ณธ๋ค.
npm install -g lighthouse
lighthouse <url>
lighthouse --help
Lighthouse ๋ถ์ ๊ฒฐ๊ณผ ํญ๋ชฉ
- Performance
- ์น ์ฑ๋ฅ์ ์ธก์ ํ๋ค. ํ๋ฉด์ ์ปจํ ์ธ ๊ฐ ํ์๋๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ํ์๋ ํ ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ธฐ ๊น์ง ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์ง, ํ๋ฉด์ ๋ถ์์ ํ ์์๋ ์๋์ง ๋ฑ์ ํ์ธํ๋ค.
- Accessibility
- ์น ํ์ด์ง๊ฐ ์น ์ ๊ทผ์ฑ์ ์ ๊ฐ์ถ๊ณ ์๋์ง ํ์ธํ๋ค. ๋์ฒด ํ ์คํธ๋ฅผ ์ ์์ฑํ๋์ง, ๋ฐฐ๊ฒฝ์๊ณผ ์ปจํ ์ธ ์์์ ๋๋น๊ฐ ์ถฉ๋ถํ์ง, ์ ์ ํ WAI-ARIA ์์ฑ์ ์ฌ์ฉํ๋์ง ๋ฑ์ ํ์ธํ๋ค.
- Best Practices
- ์น ํ์ด์ง๊ฐ ์น ํ์ค ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๋ฐ๋ฅด๊ณ ์๋์ง ํ์ธํ๋ค. HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋์ง, ์ฌ์ฉ์๊ฐ ํ์ธํ ํ๋ฅ ์ ๋์ง ์์ง๋ง ์ฝ์ ์ฐฝ์ ์ค๋ฅ๊ฐ ํ์ ๋์ง๋ ์๋์ง ๋ฑ์ ํ์ธํ๋ค.
- SEO
- ์น ํ์ด์ง๊ฐ ๊ฒ์ ์์ง ์ต์ ํ๊ฐ ์ ๋์ด์๋์ง ํ์ธํ๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ robots.txt๊ฐ ์ ํจํ์ง, <meta> ์์๋ ์ ์์ฑ๋์ด ์๋์ง, ํ ์คํธ ํฌ๊ธฐ๊ฐ ์ฝ๊ธฐ์ ๋ฌด๋ฆฌ๊ฐ ์๋์ง ๋ฑ์ ํ์ธํ๋ค.
- PWA (Progressive Web App)
- ํด๋น ์น ์ฌ์ดํธ๊ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก์๋ ์ ์๋ํ๋์ง ํ์ธํ๋ค. ์ฑ ์์ด์ฝ์ ์ ๊ณตํ๋์ง, ์คํ๋์ ํ๋ฉด์ด ์๋์ง, ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์ปจํ ์ธ ๋ฅผ ์ ์ ํ๊ฒ ๋ฐฐ์นํ๋์ง ๋ฑ์ ์ ์๊ฐ ์๋ ์ฒดํฌ๋ฆฌ์คํธ๋ก ํ์ธํ๋ค.
Lighthouse์ Performance ์ธก์ ๋ฉํธ๋ฆญ
- First Contentful Paint
- ์ฑ๋ฅ(Performance) ์งํ๋ฅผ ์ถ์ ํ๋ ๋ฉํธ๋ฆญ์ด๋ค.
- ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ ์ํ์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ DOM ์ปจํ ์ธ ์ ์ฒซ ๋ฒ์งธ ๋ถ๋ถ์ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ๋ค.
- ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ค๋ฉด FCP๊ฐ 1.8์ด ์ดํ์ฌ์ผ ํ๋ค.
- Largest Contentful Paint
- ๋ทฐํฌํธ๋ฅผ ์ฐจ์งํ๋ ๊ฐ์ฅ ํฐ ์ปจํ ์ธ ์ ๋ ๋ ์๊ฐ์ ์ธก์ ํ๋ค.
- ์ฃผ์ ์ปจํ ์ธ ๊ฐ ์ ์ ์๊ฒ ๋ณด์ด๋ ์๊ฐ๊น์ง๋ฅผ ๊ฐ๋ ํ ์ ์๋ค.
- Speed Index
- ์ฑ๋ฅ(Performance) ์งํ๋ฅผ ์ถ์ ํ๋ ๋ฉํธ๋ฆญ์ด๋ค.
- ํ์ด์ง๋ฅผ ๋ก๋ํ๋ ๋์ ์ผ๋ง๋ ๋นจ๋ฆฌ ์ปจํ ์ธ ๊ฐ ์๊ฐ์ ์ผ๋ก ํ์๋๋ ์ง๋ฅผ ์ธก์ ํ๋ค.
- Time to interactive
- ํ์ด์ง๊ฐ ๋ก๋๋๋ ์์ ๋ถํฐ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ ์์ ๊น์ง์ ์๊ฐ์ ์ธก์ ํ๋ค.
- ํ์ด์ง์ FCP๋ก ์ธก์ ๋ ์ปจํ ์ธ ๊ฐ ํ์๋์ด์ผ ํ๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๊ฐ์ฅ ์ ๋ณด์ด๋ ํ์ด์ง์ ์๋ฆฌ๋จผํธ์ ๋ฑ๋ก๋๋ค.
- ํ์ด์ง๊ฐ 0.05์ด์์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ์๋ตํ๋ค.
- ํ์ด์ง๊ฐ ๋ก๋๋๋ ์์ ๋ถํฐ ์ฌ์ฉ์์์ ์ํธ์์ฉ์ด ๊ฐ๋ฅํ ์์ ๊น์ง์ ์๊ฐ์ ์ธก์ ํ๋ค.
- Total Blocking Time
- ํ์ด์ง๊ฐ ์ ์ ์ ์ํธ์์ฉํ๊ธฐ๊น์ง์ ๋งํ์๋ ์๊ฐ์ ์ธก์ ํ๋ค.
- FCP์ TTI ์ฌ์ด์ ๊ธด ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ ๋ค์ ๋ชจ๋ ๊ธฐ๋กํ์ฌ TBT๋ฅผ ์ธก์ ํ๋ค.
- Cumulative Layout Shift
- ์ฌ์ฉ์์๊ฒ ์ปจํ ์ธ ๊ฐ ํ๋ฉด์์ ์ผ๋ง๋ ๋ง์ด ์์ง์ด๋์ง(๋ถ์์ ํ ์ง)๋ฅผ ์์นํํ ์งํ์ด๋ค.
๐ ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ด์ฉ
[udemy] React ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธ์ฉ ์ด๋ผ๋ ๊พธ์คํ ๋ฃ๊ธฐ)
Study์๊ณผ ํจ๊ป ์งํ์ค์ธ ํ๋ก์ ํธ ๊ตฌํ
- ๋ง์ดํ์ด์ง ๋๋กญ๋ค์ด ๋ฉ๋ด ๊ตฌ์ฑ
๐ ์ค์ํ ๋ด์ฉ
- ์ต์ ํ๋?
- ์ต์ ํ์ ํ์์ฑ๊ณผ ํจ๊ณผ
- ํ๋ก ํธ์๋์์์ ์ต์ ํ ๋ฐฉ๋ฒ
- Ligthhouse๋ฅผ ํตํ ์น ํ์ด์ง ๊ฐ์
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.08.08_TIL (0) | 2022.08.08 |
---|---|
22.08.05_TIL (0) | 2022.08.05 |
22.08.03_TIL (0) | 2022.08.03 |
22.08.02_TIL (0) | 2022.08.02 |
22.08.01_TIL (0) | 2022.08.01 |