ํ์ฌ ์ฌ์ดํธ์ ์นํ์ด์ง ํ์ง์ ์ธก์ ํ๊ณ ๊ฐ์ ํ๊ธฐ ์ํด Google Lighthouse๋ฅผ ํ์ฉํ์ต๋๋ค.
์ต์ด ์ธก์ ๊ฒฐ๊ณผ ์ฑ๋ฅ ์ ์ 76์ ์ ๋ฐ์๊ณ , Lighthouse์์ ์ ์ํ ๊ฐ์ ์ฌํญ ์ค ์ผ๋ถ๋ฅผ ์ ์ฉํ์ฌ 82์ ๊น์ง ๋์ด์ฌ๋ฆด ์ ์์์ต๋๋ค.

์ด๋ฒ ๊ธ์์๋ ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ๋ถ๋ถ์ ๊ฐ์ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ณผ์ ์์ ์ด๋ค ์ ์ ๊ณ ๋ คํ๋์ง ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
1. Lighthouse์์ ์ ์ํ ๊ฐ์ ํญ๋ชฉ
Lighthouse๋ ์นํ์ด์ง ์ฑ๋ฅ ์ ํ ์์ธ์ผ๋ก ์ฌ๋ฌ ํญ๋ชฉ์ ์ ์ํ์ผ๋ฉฐ, ์ด ์ค ๋ ๊ฐ์ง๋ฅผ ์ฃผ์ ๊ฐ์ ํฌ์ธํธ๋ก ์ ์ ํ์ต๋๋ค.


- ์ด๋ฏธ์ง ์์์ width ๋ฐ height ์์ฑ์ด ๋ช ์๋์ง ์์
- CSS ํ์ผ ์ต์ ํ(์ถ์ ๋ฐ ์ค๋ณต ์ ๊ฑฐ ํ์)
์ด ๋ ๊ฐ์ง๋ ๋จ์ํด ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ CLS(Cumulative Layout Shift), ๋ ๋๋ง ์ฑ๋ฅ, ๋คํธ์ํฌ ์ ์ก๋์ ์ง๊ฒฐ๋๋ ๋ถ๋ถ์ ๋๋ค.
CLS(Cumulative Layout Shift): ์ฌ์ฉ์๊ฐ ์๊ธฐ์น ์์ ๋ ์ด์์ ๋ณํ๋ฅผ ์ผ๋ง๋ ์์ฃผ ๊ฒฝํํ๋์ง ์ธก์ ํ๋ ํญ๋ชฉ
2. ๊ฐ์ ๊ณผ์
(1) ์ด๋ฏธ์ง ์์์ width/height ๋ฏธ์ง์ → aspect-ratio ์ ์ฉ
Lighthouse์์๋ ๋ชจ๋ <img> ์์์ width์ height๋ฅผ ๋ช
์ํ๋ผ๊ณ ์๋ดํฉ๋๋ค.
์ด๋ CLS ์ต์ํ์ ๋ฐ์ ํ ๊ด๋ จ์ด ์์ต๋๋ค.
๋ฌธ์ ์
- HTML์์ ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ฉํ๊ธฐ ์ ๊น์ง ๋ ์ด์์ ํฌ๊ธฐ๋ฅผ ์ ์ ์์ต๋๋ค.
- ๊ทธ ๊ฒฐ๊ณผ ์ด๋ฏธ์ง ๋ก๋ฉ์ด ๋ฆ์ผ๋ฉด ๊ธฐ์กด ๋ฐฐ์น๊ฐ ๋ฐ๋ฆฌ๊ฑฐ๋ ํ๋ค๋ฆฌ๋ CLS ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ฐ์ ๋ฐฉ๋ฒ
๊ธฐ์กด ์ฝ๋:
<img src="/images/footer_bnr.jpg" alt="ํธํฐ์ด๋ฏธ์ง" style="width:100%;" />
์์ ์ฝ๋:
<img src="/images/footer_bnr.jpg" alt="ํธํฐ์ด๋ฏธ์ง" style="aspect-ratio: 64/5; width:100%;object-fit: cover;" />
→ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฏธ์ง์ ๋น์จ์ ๋จผ์ ๊ณ์ฐํ์ฌ ๋ ์ด์์์ด ์์ ๋๊ณ CLS ์ ์๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
(2) CSS ์ถ์ ๋ฐ Google Fonts ์ต์ ํ
Lighthouse๋ ๋ถํ์ํ๊ฒ ํฐ CSS ํ์ผ๊ณผ ์ค๋ณต๋ Google Fonts import๋ฅผ ์ฑ๋ฅ ์ ํ ์์ธ์ผ๋ก ์ง์ ํ์ต๋๋ค.
๋ฌธ์ ์
- ํ๋ก์ ํธ ๋ด ์ฌ๋ฌ CSS ํ์ผ์์ Google Fonts๋ฅผ ์ค๋ณต ์ ์ธํ๊ณ ์์์ต๋๋ค.
- ๋์ผํ ๋ฆฌ์์ค๋ฅผ ์ฌ๋ฌ ๋ฒ ์์ฒญํ๋ฉด์ ๋คํธ์ํฌ ์์ฒญ ์ค๋ณต๊ณผ CSS ์ฉ๋ ์ฆ๊ฐ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฐ์ ๋ฐฉ๋ฒ
Google Fonts import๋ฅผ ๊ณตํต CSS๋ก ํตํฉํ์ต๋๋ค.
/* Before: ๊ฐ CSS ํ์ผ๋ง๋ค ์ค๋ณต ์ ์ธ */
@import url(//fonts.googleapis.com/earlyaccess/notosanskr.css);
/* After: ๊ณตํต CSS์ ํ ๋ฒ๋ง ์ ์ธ */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&family=Nanum+Gothic:wght@400;700;800&family=Nanum+Gothic+Coding&display=swap');
→ Google Fonts๋ฅผ ๊ณตํต CSS์ ํตํฉํ๊ณ , CSS๋ฅผ minifyํ์ฌ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ์ต๋๋ค.
3. ๊ฐ์ ๊ฒฐ๊ณผ

- ์ฑ๋ฅ ์ ์: 76์ → 82์ (+6์ )
- CLS ๊ฐ์ : ์ด๋ฏธ์ง aspect-ratio ์ ์ฉ์ผ๋ก ์๊ฐ์ ์์ ์ฑ ํ๋ณด
- ๋คํธ์ํฌ ์์ฒญ ์ต์ ํ: Google Fonts ์ค๋ณต ์ ๊ฑฐ ๋ฐ CSS ์ถ์
๋ฌผ๋ก ์์ง ์บ์ฑ ์ ์ฑ , JS ๋ฒ๋ค๋ง ์ต์ ํ ๋ฑ ๊ฐ์ ์ฌ์ง๋ ๋ง์ง๋ง, ์ด๋ฒ ๋จ๊ณ์์ ์์ ๋ ธ๋ ฅ์ผ๋ก ์ฑ๋ฅ์ ๋์ ๋๊ฒ ํฅ์์ํฌ ์ ์์์ต๋๋ค.
4. ๋ง๋ฌด๋ฆฌ
Lighthouse์ ์ ์์ ๋จ์ํ ๊ฒฝ๊ณ ๊ฐ ์๋๋ผ, ์ค์ ์ฌ์ฉ์ ๊ฒฝํ(UX)๊ณผ ์ฑ๋ฅ์ ์ง๊ฒฐ๋๋ ์ค์ํ ํํธ์
๋๋ค.
์ด๋ฒ ๊ฐ์ ๊ณผ์ ์ ํตํด “์ฌ์ํด ๋ณด์ด๋ ๋ถ๋ถ”์ด ์ค์ ์ฑ๋ฅ ์ ์์ ์ฒด๊ฐ ์๋์ ์ผ๋ง๋ ํฐ ์ํฅ์ ๋ฏธ์น๋์ง ํ์ธํ ์ ์์์ต๋๋ค.
์์ผ๋ก๋ ์ด๋ฏธ์ง ์ต์ ํ, ์บ์ ์ ์ฑ
๊ฐ์ , JS ๋ฒ๋ค๋ง ์ต์ ํ ๋ฑ์ ์ ์ฉํ์ฌ ๋ ๋์ ์ ์๋ฅผ ๋ชฉํ๋ก ๊ฐ์ ํด ๋๊ฐ ๊ณํ์
๋๋ค.
'DevLog' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [JavaScript] ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ์ ์ญ ๊ณตํต ์ปดํฌ๋ํธ๋ก ๊ฐ์ ํ๊ธฐ (0) | 2025.08.22 |
|---|