페이지 속도 체크리스트
Core Web Vitals 체크리스트로 최적화 진행률을 추적하세요. LCP, INP, CLS 등 성능 메트릭별 스마트 추천을 제공합니다.
전체 진행률
0/27 완료전체 항목의 0% 완료
LCP (Largest Contentful Paint)
0/7로딩 성능을 측정합니다. 양호한 LCP는 2.5초 미만입니다.
가장 큰 이미지 또는 텍스트 블록 최적화
필수영향도: 높음DevTools로 LCP 요소를 파악하고 최대한 빠르게 로드되도록 합니다. 이미지를 압축하고, 최신 포맷(WebP/AVIF)을 사용하며, 명시적인 width/height를 설정하세요.
LCP 리소스 preload 적용
필수영향도: 높음LCP 이미지나 폰트에 <link rel="preload">를 추가하여 브라우저가 CSS나 JS를 기다리지 않고 먼저 가져오도록 합니다.
정적 자산에 CDN 사용
중요영향도: 높음이미지, 폰트 등의 자산을 CDN에서 제공하여 다양한 지역의 사용자에게 지연 시간을 줄입니다.
렌더 차단 리소스 제거
필수영향도: 높음중요하지 않은 CSS와 JS를 지연 로드합니다. 크리티컬 CSS를 인라인으로 삽입하여 첫 렌더링 속도를 높이고 LCP 요소의 차단을 방지하세요.
srcset을 사용한 반응형 이미지 제공
중요영향도: 중간srcset과 sizes 속성을 활용하여 각 뷰포트에 적절한 크기의 이미지를 제공하고, 과대한 이미지 다운로드를 방지합니다.
서버 응답 시간(TTFB) 최적화
중요영향도: 중간Time to First Byte를 800ms 미만으로 유지합니다. 서버 측 캐싱, 데이터베이스 쿼리 최적화, Edge 렌더링을 고려하세요.
LCP 이미지에 lazy-loading 사용 금지
필수영향도: 높음LCP 요소는 즉시 로드되어야 합니다. 히어로 이미지에 loading="eager" 또는 fetchpriority="high"를 설정하세요.
INP (Interaction to Next Paint)
0/7사용자 입력에 대한 응답성을 측정합니다. 양호한 INP는 200밀리초 미만입니다.
긴 작업 분할
필수영향도: 높음50ms 이상 걸리는 JavaScript 작업을 requestIdleCallback, setTimeout, scheduler.yield() 등을 사용하여 작은 단위로 분할합니다.
메인 스레드 작업 최소화
필수영향도: 높음사용하지 않는 코드를 제거하고, 비필수 스크립트를 지연시키며, 코드 분할을 사용하여 JavaScript 실행 시간을 줄입니다.
이벤트 핸들러 최적화
중요영향도: 높음이벤트 핸들러를 가볍게 유지합니다. 무거운 계산은 Web Worker로 이동하거나 requestAnimationFrame으로 지연시킵니다.
DOM 크기 줄이기
중요영향도: 중간DOM을 1,500개 노드 미만으로 유지합니다. 큰 DOM은 인터랙션 시 스타일 계산, 레이아웃, 페인트 작업을 느리게 합니다.
강제 동기 레이아웃 방지
중요영향도: 중간DOM 변경 직후에 레이아웃 속성(offsetHeight, getBoundingClientRect)을 읽지 마세요.
CSS containment 사용
권장영향도: 중간독립적인 섹션에 contain: content 또는 contain: layout을 추가하여 브라우저의 재레이아웃 범위를 제한합니다.
빠른 입력 이벤트 디바운싱
중요영향도: 중간scroll, resize, input 이벤트에 디바운싱 또는 스로틀링을 적용하여 프레임당 과도한 처리를 방지합니다.
CLS (Cumulative Layout Shift)
0/6시각적 안정성을 측정합니다. 양호한 CLS는 0.1 미만입니다.
이미지와 동영상에 명시적 크기 설정
필수영향도: 높음항상 width와 height 속성(또는 CSS aspect-ratio)을 포함하여 미디어 로드 전에 브라우저가 공간을 예약하도록 합니다.
광고 및 임베드 공간 확보
필수영향도: 높음광고 슬롯, iframe, 동적으로 삽입되는 콘텐츠에 min-height 또는 aspect-ratio 컨테이너를 사용합니다.
상단 영역에 콘텐츠 동적 삽입 금지
필수영향도: 높음로드 후 기존 콘텐츠를 아래로 밀어내는 배너, 쿠키 알림, 알림을 동적으로 삽입하지 마세요.
font-display: swap과 size-adjust 사용
중요영향도: 중간font-display: swap과 함께 size-adjust 또는 폰트 폴백 메트릭을 사용하여 웹 폰트로 인한 레이아웃 이동을 방지합니다.
동적 요소 크기 변경 방지
중요영향도: 중간갑작스러운 크기 변경 대신 CSS 트랜지션을 사용합니다. width/height 대신 transform으로 애니메이션을 적용하세요.
화면 밖 콘텐츠에 content-visibility 적용
권장영향도: 낮음아래쪽 섹션에 content-visibility: auto와 contain-intrinsic-size를 적용하여 레이아웃을 안정화합니다.
일반 성능
0/7전체적인 페이지 속도와 사용자 경험을 향상시키는 광범위한 최적화 항목입니다.
텍스트 압축 활성화 (gzip/Brotli)
필수영향도: 높음HTML, CSS, JS 응답을 Brotli(권장) 또는 gzip으로 압축합니다. 대부분의 호스팅 플랫폼에서 기본 지원합니다.
CSS 및 JavaScript 최소화
중요영향도: 중간CSS와 JS 번들에서 공백, 주석, 사용하지 않는 코드를 제거합니다. Terser, cssnano 등의 도구를 사용하세요.
캐싱 헤더 구현
중요영향도: 중간정적 자산에 적절한 max-age의 Cache-Control 헤더를 설정합니다. 해시된 파일명에는 immutable을 사용하세요.
서드파티 스크립트 영향 최소화
중요영향도: 높음서드파티 스크립트(분석, 채팅 위젯 등)를 감사합니다. 지연 로드하거나 defer를 적용하고, Partytown 도입을 고려하세요.
HTTP/2 또는 HTTP/3 사용
중요영향도: 중간서버가 HTTP/2 이상을 지원하는지 확인하여 멀티플렉싱, 헤더 압축, 빠른 리소스 전달을 활용합니다.
리소스 힌트 구현
권장영향도: 낮음서드파티 출처에 dns-prefetch와 preconnect를 사용합니다. 중요한 외부 도메인에 <link rel="preconnect">를 추가하세요.
JavaScript Tree-shaking 및 코드 분할
중요영향도: 높음동적 import와 Tree shaking을 사용하여 각 페이지에 필요한 JavaScript만 전송합니다. 초기 번들 크기를 줄입니다.
Core Web Vitals 기준값
LCP
2.5초
양호: < 2.5초
미흡: > 4.0초
INP
200ms
양호: < 200ms
미흡: > 500ms
CLS
0.1
양호: < 0.1
미흡: > 0.25
- LCP (Largest Contentful Paint): 메인 콘텐츠가 얼마나 빨리 로드되는지 측정합니다. 이미지, 폰트, 서버 응답 시간을 최적화하세요.
- INP (Interaction to Next Paint): 응답성을 측정합니다. JavaScript 차단 시간을 줄이고 이벤트 핸들러를 최적화하세요.
- CLS (Cumulative Layout Shift): 시각적 안정성을 측정합니다. 명시적 크기를 설정하고 동적 콘텐츠를 위한 공간을 확보하세요.
- 실제 데이터로 테스트하세요: Google Search Console, PageSpeed Insights, Chrome UX Report의 필드 데이터를 활용하세요. 랩 테스트만으로는 부족합니다.
주요 기능
- Core Web Vitals 체크리스트
- LCP 최적화 팁
- CLS 감소 가이드
- INP 개선 단계
- 진행률 추적
- 우선순위 추천
SEO 팁
- 타이틀 태그는 60자 이내로 작성하세요
- 메타 디스크립션은 150~160자가 적당합니다
- 주요 키워드를 자연스럽게 포함하세요
- 각 페이지의 메타 정보를 고유하게 작성하세요