Lighthouse๋ ์น ํ์ด์ง์ ํ์ง์ ์ธก์ ํ๊ธฐ ์ํด Google์์ ๊ฐ๋ฐํ ์คํ ์์ค ์๋ํ ๋๊ตฌ์ด๋ค. ์ฃผ๋ก ์น ๊ฐ๋ฐ์๊ฐ ์ฌ์ดํธ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์น์ฌ์ดํธ์ ์ ๋ฐ์ ์ธ ํ์ง์ ํ๊ฐํ๋ ๋ฐ ์์ด Lighthouse ์ ์๋ ํ๋์ ์ค์ํ ๊ธฐ์ค์ด ๋๋ค. ์ฑ๋ฅ, ์ ๊ทผ์ฑ, SEO, ์ฌ์ฉ์ ๊ฒฝํ ๋ฑ ๋ค์ํ ์์๋ฅผ ์ข
ํฉ์ ์ผ๋ก ๋ถ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ ๊ฐ์ ์ ์ํ ์ง์์ ์ธ ๊ด๋ฆฌ์ ์ต์ ํ๊ฐ ํ์ํ๋ค.
Lighthouse๋ Google Chrome์ DevTools(F12)์ ํฌํจ๋์ด ์์ผ๋ฉฐ Lighthouse ํญ์ ํตํด ๊ฐ๋จํ๊ฒ ๋ถ์์ ์คํํ ์ ์๋ค. ๋ํ ๋ชจ๋ฐ์ผ๊ณผ ๋ฐ์คํฌํฑ ํ๊ฒฝ์ ๊ฐ๊ฐ ์ ํํ์ฌ ํ
์คํธํ ์ ์๋ค.

์ฑ๋ฅ ํญ๋ชฉ์ ํ์ด์ง ๋ก๋ฉ ์๋์ ๋ ๋๋ง ํจ์จ์ ์ค์ฌ์ผ๋ก ํ๊ฐ๋๋ค. ํนํ ์ด๊ธฐ ๋ก๋ฉ ์๋์ ๋ถํ์ํ ๋ฆฌ์์ค ๋ก๋ฉ ์ฌ๋ถ๊ฐ ์ค์ํ ๊ธฐ์ค์ด ๋๋ค. ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ ์ฉํ ์ ์๋ค.
์ด๋ฏธ์ง ์ต์ ํ
์๋ณธ ์ด๋ฏธ์ง์ ํด์๋์ ์ฉ๋์ด ๋ถํ์ํ๊ฒ ํฐ ๊ฒฝ์ฐ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ด๋ฏธ์ง ํฌ๋งท์ WebP๋ AVIF ๊ฐ์ ์ต์ ํฌ๋งท์ผ๋ก ๋ณํํ์ฌ ์ฉ๋์ ์ต์ ํํ๋ค.
์ฐธ๊ณ ) ๐ผ๏ธ ์น ์ฑ๋ฅ์ ์ํ ์ด๋ฏธ์ง ์์ถ ๋๊ตฌ ์ ๋ฆฌ (TinyPNG & Squoosh)
๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ์ต์ํ
์ด๊ธฐ ๋ ๋๋ง์ ๋ง๋ ์คํฌ๋ฆฝํธ๋ ์คํ์ผ ๋ฆฌ์์ค๋ ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ์ ํ์ํฌ ์ ์๋ค. ์ธ๋ถ ์คํฌ๋ฆฝํธ์๋ strategy ์์ฑ์ ์ค์ ํ๊ณ ํ์ํ ์์ ์๋ง JavaScript๊ฐ ๋ก๋๋๋๋ก ์ง์ฐ ๋ก๋ฉ ๋ฐฉ์์ ์ ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ถํ์ํ JavaScript ๋ก๋ฉ ์ ๊ฑฐ
์ฌ์ฉํ์ง ์๋ JavaScript chunk๊ฐ ๋ฒ๋ค์ ํฌํจ๋์ง ์๋๋ก ๊ด๋ฆฌํด์ผ ํ๋ค. ๋ํ ๋ฌด๊ฑฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋์๋ ๊ธฐ๋ฅ ๋๋น ์ฑ๋ฅ ๋น์ฉ์ ์ถฉ๋ถํ ๊ณ ๋ คํ์ฌ ๋์
ํ๋ ๊ฒ์ด ์ข๋ค.
์ฝ๋ ์คํ๋ฆฌํ
์ ์ฉ
ํ์ด์ง๋ณ๋ก ํ์ํ JavaScript๋ง ๋ก๋ํ๋๋ก ์ฝ๋ ์คํ๋ฆฌํ
์ ์ ์ฉํ๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค.
ํฐํธ ๋ก๋ฉ ์ต์ ํ
์น ํฐํธ๋ ๋ก๋ฉ ๊ณผ์ ์์ ๋ ๋๋ง ์ง์ฐ์ ๋ฐ์์ํฌ ์ ์๋ค. font-display: swap ์ต์
์ ์ฌ์ฉํ๋ฉด ํฐํธ ๋ก๋ฉ ์ ์๋ ๊ธฐ๋ณธ ํฐํธ๋ฅผ ๋จผ์ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์๋ค.
์ ๊ทผ์ฑ ํญ๋ชฉ์ ๋ค์ํ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ฌธ์ ์์ด ์ด์ฉํ ์ ์๋๋ก ์ค๊ณ๋์๋์ง๋ฅผ ํ๊ฐํ๋ค. ํนํ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ง์, ์์ ๋๋น, ํค๋ณด๋ ์ ๊ทผ์ฑ ๋ฑ์ด ์ค์ํ ์์๋ก ์์ฉํ๋ค.
์ ๊ทผ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ ํ์ธํด์ผ ํ๋ค.
form ์์์ label์ด ์์
์คํฌ๋ฆฐ ๋ฆฌ๋๋ label์ ํตํด ์
๋ ฅ ํ๋์ ์๋ฏธ๋ฅผ ํ์
ํ๋ค. label ํ๊ทธ๋ฅผ for ์์ฑ๊ณผ ํจ๊ป ๋ช
์์ ์ผ๋ก ์ฐ๊ฒฐํ๊ฑฐ๋ aria-label ๋๋ aria-labelledby ์์ฑ์ ํ์ฉํ๋ค.
์ด๋ฏธ์ง์ alt ์์ฑ์ด ์์
์ด๋ฏธ์ง๋ ์๊ฐ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์์์ด๊ธฐ ๋๋ฌธ์ ๋์ฒด ํ
์คํธ๊ฐ ํ์ํ๋ค. ๋ชจ๋ <img> ํ๊ทธ์ ์ด๋ฏธ์ง์ ์๋ฏธ๋ฅผ ์ค๋ช
ํ๋ alt ํ
์คํธ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
์์ ๋๋น๊ฐ ๋ฎ์
ํ
์คํธ์ ๋ฐฐ๊ฒฝ ์์์ ๋๋น๊ฐ ๋ฎ์ผ๋ฉด ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ์ ์๋ค. ์ผ๋ฐ ํ
์คํธ ๊ธฐ์ค ์ต์ 4.5:1 ์ด์์ ๋ช
๋ ๋๋น๋ฅผ ํ๋ณดํ๋๋ก ์์ ์กฐํฉ์ ์ค๊ณํด์ผ ํ๋ค.
ํค๋ณด๋๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ UI
๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ฌ์ฉ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ ์ ์์ด์ผ ํ๋ค. <button>, <a>, <input>๊ณผ ๊ฐ์ ์๋งจํฑ HTML ์์๋ฅผ ์ฌ์ฉํ๊ณ tabindex, role, aria-* ์์ฑ์ ํ์ฉํ์ฌ ํค๋ณด๋ ํฌ์ปค์ค ์ด๋์ ๊ด๋ฆฌํ๋ค.
๋ฒํผ์ ์ ๊ทผ ๊ฐ๋ฅํ ์ด๋ฆ์ด ์์
์์ด์ฝ๋ง ์๋ ๋ฒํผ์ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ๊ธฐ๋ฅ์ ์ดํดํ๊ธฐ ์ด๋ ต๋ค. ์ด ๊ฒฝ์ฐ aria-label ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ฒํผ์ ์ญํ ์ ๋ช
ํํ ์ค๋ช
ํด์ผ ํ๋ค.
๊ถ์ฅ์ฌํญ ํญ๋ชฉ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ๋ณด์, ์์ ์ฑ, ์ต์ ์น ํ์ค์ ์ ์ค์ํ๊ณ ์๋์ง๋ฅผ ํ๊ฐํ๋ค. ์ด ํญ๋ชฉ์ ์ฑ๋ฅ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ ์์ง๋ง ์ฌ์ฉ์ ์์ ๊ณผ ์๋น์ค ์ ๋ขฐ์ฑ ์ธก๋ฉด์์ ์ค์ํ ๊ธฐ์ค์ด ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ ์ ๊ฒํ์ฌ ๊ฐ์ ํ ์ ์๋ค.
HTTPS๊ฐ ์๋ ํ์ด์ง
์น์ฌ์ดํธ๋ HTTPS ํ๋กํ ์ฝ์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค. SSL ์ธ์ฆ์๋ฅผ ์ ์ฉํ์ฌ ๋ชจ๋ ์์ฒญ์ ์ํธํํ๊ณ HTTP ์์ฒญ์ HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธ ์ฒ๋ฆฌํ๋ค.
์ทจ์ฝํ JavaScript API ์ฌ์ฉ
๋ณด์์ ์ทจ์ฝํ๊ฑฐ๋ ๋นํจ์จ์ ์ธ JavaScript API ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค. ๋ํ์ ์ผ๋ก document.write()๋ eval()๊ฐ์ ํจ์๋ ๋ณด์ ๋ฌธ์ ์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
์ธ๋ถ ๋งํฌ ๋ณด์ ์์ฑ ๋ฏธ์ค์ target="_blank"๋ก ์ธ๋ถ ํ์ด์ง๋ฅผ ์ด ๋๋ rel="noopener" ๋๋ rel="noreferrer" ์์ฑ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ฐฝ์์ ๊ธฐ์กด ํ์ด์ง๋ฅผ ์ ์ดํ ์ ์๋ ๋ณด์ ์ํ์ ์ค์ผ ์ ์๋ค.
๋ธ๋ผ์ฐ์ ์ฝ์ ์ค๋ฅ ๋ฐ์
ํ์ด์ง ์คํ ์ค ๋ธ๋ผ์ฐ์ ์ฝ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ๊ณผ ์์ ์ฑ์ ์ํฅ์ ์ค ์ ์๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฝ์ ์ค๋ฅ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ํ์ธํ๊ณ ์์ ํ๋ ๊ฒ์ด ์ข๋ค.
SEO ํญ๋ชฉ์ ๊ฒ์ ์์ง์ด ์นํ์ด์ง์ ๋ด์ฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ํฌ๋กค๋งํ๊ณ ์์ธํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์๋์ง๋ฅผ ํ๊ฐํ๋ค. ๋ฉํ ์ ๋ณด, ๋งํฌ ๊ตฌ์กฐ, ์ฌ์ดํธ ๋งต ๋ฑ์ ์์๊ฐ ์ฃผ์ ๊ธฐ์ค์ด ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ ์ ๊ฒํ์ฌ ๊ฐ์ ํ ์ ์๋ค.
title ํ๊ทธ ์ต์ ํ
๊ฒ์ ๊ฒฐ๊ณผ์์ ๊ฐ์ฅ ๋จผ์ ํ์๋๋ ์์์ด๊ธฐ ๋๋ฌธ์ ํ์ด์ง ๋ด์ฉ์ ๋ช
ํํ๊ฒ ์ค๋ช
ํ๋ title ํ๊ทธ๋ฅผ ์ค์ ํด์ผ ํ๋ค. ํ์ด์ง๋ง๋ค ๊ณ ์ ํ title์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
meta description ๋๋ฝ
ํ์ด์ง ๋ด์ฉ์ ์์ฝํ๋ meta description ํ๊ทธ๊ฐ ์์ผ๋ฉด ๊ฒ์ ๊ฒฐ๊ณผ์์ ํ์ด์ง์ ๋ด์ฉ์ ์ ๋๋ก ์ ๋ฌํ๊ธฐ ์ด๋ ต๋ค. ํ์ด์ง๋ณ๋ก 150~160์ ๋ด์ธ์ ์์ฝ ๋ฌธ์ฅ์ ์์ฑํ์ฌ meta ํ๊ทธ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค.
๋งํฌ์ anchor ํ
์คํธ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ
๋งํฌ ํ
์คํธ๋ ์ด๋ํ ํ์ด์ง์ ๋ชฉ์ ์ ๋ช
ํํ๊ฒ ์ค๋ช
ํด์ผ ํ๋ค. ์ฌ๊ธฐ ํด๋ฆญ, ๋๋ณด๊ธฐ์ ๊ฐ์ ๋ชจํธํ ํํ๋ณด๋ค๋ ๊ตฌ์ฒด์ ์ธ ์ค๋ช
ํ
์คํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ฒํผ์ด๋ ์ด๋ฏธ์ง ๋งํฌ์ ๊ฒฝ์ฐ aria-label ๋๋ alt ์์ฑ์ ํ์ฉํ๋ค.
robots.txt ๋๋ sitemap ๋๋ฝ
๊ฒ์ ์์ง์ด ์ฌ์ดํธ ๊ตฌ์กฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํฌ๋กค๋งํ ์ ์๋๋ก ๋ฃจํธ ๊ฒฝ๋ก์ robots.txt์ sitemap.xml ํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ข๋ค.
๋ชจ๋ฐ์ผ ์นํ์ฑ ๋ถ์กฑ
๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ์ฝํ
์ธ ๊ฐ ์ ํ์๋๋๋ก ๋ฐ์ํ ๋์์ธ์ ์ ์ฉํ๊ณ meta viewport ํ๊ทธ๋ฅผ ์ค์ ํด์ผ ํ๋ค.
PWA๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ชจ๋ฐ์ผ ์ฑ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ธฐ์ ์ ์๋ฏธํ๋ค. Lighthouse์์๋ ์น์ฌ์ดํธ๊ฐ ์ฑ ์์ค์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋์ง๋ฅผ ํ๊ฐํ๋ค.
์ด๋ฅผ ์ํด Web App Manifest ์ค์ , Service Worker ๋ฑ๋ก, HTTPS ์ฌ์ฉ, ์คํ๋ผ์ธ ๋์ ์ง์ ๋ฑ์ ์์๊ฐ ํ์ํ๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ์ฉํ๋ฉด ์ฌ์ฉ์๋ ์น์ฌ์ดํธ๋ฅผ ํ ํ๋ฉด์ ์ถ๊ฐํ์ฌ ์ฑ์ฒ๋ผ ์คํํ ์ ์์ผ๋ฉฐ ๋คํธ์ํฌ๊ฐ ๋ถ์์ ํ ํ๊ฒฝ์์๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.
์ด ์ธ์๋ ๋ค์ํ ํ๊ฐ ์์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ Lighthouse ๊ฒ์ฌ๋ฅผ ํตํด ๊ฐ ํญ๋ชฉ์ ๋ถ์กฑํ ๋ถ๋ถ์ ํ์ธํ ์ ์๋ค. ๊ฒ์ฌ ๊ฒฐ๊ณผ์ ํ์๋๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์ ๋ฅผ ์์ ํ๊ณ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ด ์น์ฌ์ดํธ ํ์ง ํฅ์์ ๋์์ด ๋๋ค. 
