Core Web Vitals: 웹 성능 측정 및 개선하기
빠른 웹사이트를 구축했는데도 사용자들이 여전히 느리다고 불평하나요? 아니면 Google 업데이트 이후 SEO 순위가 떨어졌나요? 원인은 Core Web Vitals—Google의 사용자 경험 지표—일 수 있습니다. 이 가이드에서는 Core Web Vitals이 무엇인지, 정확하게 측정하는 방법, 그리고 각 지표를 개선하기 위한 실용적인 단계를 배웁니다.
Core Web Vitals이란?
Core Web Vitals은 사용자 경험의 핵심 측면을 정량화하는 세 가지 특정 지표입니다:
- Largest Contentful Paint (LCP): 로딩 성능을 측정합니다. 가장 큰 콘텐츠 요소(이미지, 비디오 또는 텍스트 블록)가 보이게 되는 시간을 표시합니다. LCP는 2.5초 미만을 목표로 하세요.
- First Input Delay (FID): 상호작용성을 측정합니다. 사용자가 처음 상호작용(예: 링크 클릭)한 때부터 브라우저가 응답할 때까지의 시간을 기록합니다. FID는 100밀리초 미만을 목표로 하세요.
- Cumulative Layout Shift (CLS): 시각적 안정성을 측정합니다. 로딩 중 예상치 못한 레이아웃 이동을 정량화합니다. CLS는 0.1 미만을 목표로 하세요.
이 지표들은 Google의 페이지 경험 신호의 일부이며 SEO에 직접적인 영향을 미칩니다. 하지만 더 중요하게는 느린 로드, 반응 없는 클릭, 콘텐츠 점프와 같은 실제 사용자 불만을 반영합니다.
Core Web Vitals 측정 방법
측정하지 않으면 개선할 수 없습니다. 두 가지 주요 접근 방식이 있습니다: 랩 데이터(합성 테스트)와 필드 데이터(실제 사용자 모니터링). 완전한 그림을 위해 둘 다 사용하세요.
랩 도구
- Lighthouse: Chrome DevTools에 내장되어 있습니다(F12 → Lighthouse 탭). 성능을 감사하고 LCP, FID(TBT로), CLS에 대한 점수를 제공합니다. 확장 프로그램이 결과를 왜곡하지 않도록 시크릿 모드에서 실행하세요.
- WebPageTest: 상세한 워터폴 분석과 여러 위치에서의 테스트를 위한 고급 도구입니다.
- PageSpeed Insights: 랩 데이터와 필드 데이터를 결합합니다. 사용 가능한 경우 실제 CrUX 데이터를 보여줍니다.
필드 도구
- Chrome User Experience Report (CrUX): 수백만 사이트에 대한 실제 사용자 지표의 공개 데이터 세트입니다. PageSpeed Insights 또는 BigQuery를 통해 액세스하세요.
- Google Search Console: Core Web Vitals 보고서는 필드 데이터를 기반으로 주의가 필요한 URL 그룹을 보여줍니다.
- web-vitals JavaScript 라이브러리: 사이트에 추가하여 자체 필드 데이터를 수집하고 분석으로 전송하세요.
// 예: web-vitals 라이브러리 사용
import {onLCP, onFID, onCLS} from 'web-vitals';
function sendToAnalytics(metric) {
// 분석 엔드포인트로 교체하세요
console.log(metric.name, metric.value);
}
onLCP(sendToAnalytics);
onFID(sendToAnalytics);
onCLS(sendToAnalytics);
Largest Contentful Paint (LCP) 개선
LCP는 종종 가장 어려운 지표입니다. 서버 응답 시간, 리소스 로딩, 클라이언트 측 렌더링의 영향을 받습니다. 다음 단계를 따르세요:
- 서버 응답 최적화: 캐싱(CDN, 서버 측 캐시)을 사용하고, 호스팅을 업그레이드하고, 백엔드 처리 시간을 줄이세요.
- 중요 리소스 우선순위 지정: LCP 이미지나 폰트를 미리 로드하세요. 주요 자산에
<link rel="preload">를 사용하세요. - 이미지 압축: 최신 형식(WebP, AVIF)을 제공하고 품질 손실 없이 이미지를 압축하세요. Image Compressor와 같은 도구가 도움이 될 수 있습니다.
- 렌더 차단 리소스 제거: 중요하지 않은 CSS와 JavaScript를 지연시키세요. 중요 CSS를 인라인으로 처리하세요.
- CDN 사용: 콘텐츠를 전 세계에 분산하여 지연 시간을 줄이세요.
First Input Delay (FID) 개선
FID는 반응성을 측정합니다. FID가 높으면 사용자가 상호작용하려 할 때 메인 스레드가 바쁘다는 의미입니다. 개선하려면:
- 긴 작업 분할:
setTimeout또는requestIdleCallback을 사용하여 JavaScript를 작은 청크로 나누세요. - 메인 스레드 작업 최소화: 사용하지 않는 JavaScript를 제거하고, 중요하지 않은 스크립트를 지연시키고, 코드 분할을 사용하세요.
- 이벤트 핸들러 최적화: 이벤트 리스너에서 무거운 동기 작업을 피하세요.
- 웹 워커 사용: 비용이 많이 드는 계산을 워커 스레드로 오프로드하세요.
참고: FID는 2024년 3월에 Interaction to Next Paint (INP)로 대체됩니다. 원칙은 유사합니다—메인 스레드를 자유롭게 유지하세요.
Cumulative Layout Shift (CLS) 개선
CLS는 예상치 못한 레이아웃 이동을 측정합니다. 일반적인 원인으로는 크기가 지정되지 않은 이미지, 광고, 임베드, 웹 폰트가 있습니다. 다음과 같이 수정하세요:
- 이미지와 비디오에 항상 width와 height 속성 설정: 공간을 확보하여 이동을 방지합니다.
- 광고와 임베드를 위한 공간 확보: CSS
aspect-ratio또는 고정 크기 컨테이너를 사용하세요. - 기존 콘텐츠 위에 콘텐츠 삽입 피하기: 사용자 상호작용에 대한 응답이 아닌 한.
font-display: swap사용 및 폰트 미리 로드: 폰트 교체로 인한 이동을 최소화하세요.
지속적인 모니터링을 위한 도구와 워크플로우
성능은 일회성 수정이 아닙니다. 회귀를 잡기 위해 모니터링을 설정하세요:
- web-vitals 라이브러리를 추가하여 분석 플랫폼으로 지표를 전송하세요.
- 파이프라인에서 Lighthouse CI를 사용하여 점수가 임계값 아래로 떨어지면 빌드를 실패시키세요.
- Search Console의 Core Web Vitals 보고서를 정기적으로 확인하세요.
개발 중 빠른 확인을 위해 Chrome DevTools의 Lighthouse 탭을 사용하세요. 더 깊은 분석을 위해 WebPageTest를 사용해 보세요.
FAQ
좋은 LCP 점수는 무엇인가요?
좋은 LCP는 2.5초 이하입니다. 2.5초에서 4초 사이의 점수는 개선이 필요하며, 4초 이상은 나쁩니다.
Core Web Vitals을 얼마나 자주 측정해야 하나요?
주요 변경 후와 필드 데이터를 통해 지속적으로 측정하세요. 랩 테스트는 디버깅에 좋고, 필드 데이터는 실제 사용자 경험을 반영합니다.
Core Web Vitals 개선이 정말 SEO에 영향을 미치나요?
예, Google은 페이지 경험을 순위 신호로 사용하지만 콘텐츠 관련성이 여전히 우선입니다. 좋은 Core Web Vitals은 사용자 참여와 전환도 향상시킵니다.
더 나은 LCP를 위해 이미지를 최적화할 준비가 되셨나요? 품질을 희생하지 않고 파일 크기를 줄이려면 무료 Image Compressor를 사용해 보세요.