티스토리 뷰

코어 웹 바이탈(Core Web Vitals)은 웹사이트의 사용자 경험을 측정하는 핵심 지표로, LCP, FID, CLS와 같은 지표를 측정하고 화면에 표시할 수 있습니다. CWV의 특징과 간단한 예제를 소개하겠습니다.

1. CWV 특징

Core Web Vitals는 다음의 세 가지 주요 지표를 포함합니다.

  • LCP (Largest Contentful Paint):
    • 페이지에서 가장 큰 콘텐츠가 로드되는 시간입니다.
    • 페이지 로딩의 '시각적' 측면을 측정하며, 페이지가 로드되는 동안 가장 중요한 콘텐츠가 사용자에게 보이는 속도를 나타냅니다.
    • 좋은 점수: 2.5초 이하
    • 주요 목표: 페이지가 빠르게 로드되어 사용자가 빠르게 주요 콘텐츠를 볼 수 있도록 하는 것입니다.
  • FID (First Input Delay):
    • 사용자가 페이지에서 처음 상호작용을 시작할 때, 그 상호작용이 브라우저에서 반응하기까지 걸리는 시간입니다.
    • 인터랙티브성 측정으로, 사용자가 클릭하거나 스크롤할 때 즉각적인 반응을 제공하는 것이 중요합니다.
    • 좋은 점수: 100ms 이하
    • 주요 목표: 페이지가 사용자의 입력에 즉각적으로 반응할 수 있도록 최적화하는 것입니다.
  • CLS (Cumulative Layout Shift):
    • 페이지 로딩 중에 콘텐츠가 예상치 않게 이동한 정도를 측정합니다. 이는 레이아웃이 갑자기 변할 때 발생하며, 사용자 경험을 방해할 수 있습니다.
    • 좋은 점수: 0.1 이하
    • 주요 목표: 페이지가 로딩 중에 콘텐츠의 위치가 갑자기 바뀌지 않도록 하는 것입니다.

 

2. 예제

구글의 web-vitals 라이브러리를 사용하였습니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Core Web Vitals Checker</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      margin: 20px;
    }
    .vital {
      margin: 10px 0;
      padding: 10px;
      border: 1px solid #ccc;
      border-radius: 5px;
      background: #f9f9f9;
      display: flex;
      justify-content: space-between;
    }
    .vital span {
      font-weight: bold;
    }
  </style>
  <!-- 최신 web-vitals 라이브러리 로드 -->
  <script src="https://unpkg.com/web-vitals@3/dist/web-vitals.iife.js"></script>
</head>
<body>
  <h1>Core Web Vitals Checker</h1>
  <div id="vitals">
    <div class="vital" id="lcp">
      <span>LCP:</span> <span id="lcp-value">Measuring...</span>
    </div>
    <div class="vital" id="fid">
      <span>FID:</span> <span id="fid-value">Measuring...</span>
    </div>
    <div class="vital" id="cls">
      <span>CLS:</span> <span id="cls-value">Measuring...</span>
    </div>
  </div>

  <script>
    // Core Web Vitals 측정
    webVitals.getLCP((metric) => {
      document.getElementById('lcp-value').textContent = metric.value.toFixed(2) + ' ms';
    });

    webVitals.getFID((metric) => {
      document.getElementById('fid-value').textContent = metric.value.toFixed(2) + ' ms';
    });

    webVitals.getCLS((metric) => {
      document.getElementById('cls-value').textContent = metric.value.toFixed(3);
    });
  </script>
</body>
</html>
  • HTML 구조
    • h1 태그로 "Core Web Vitals Checker"라는 제목을 표시합니다.
    • 각 지표(LCP, FID, CLS)에 대해 div를 만들어 측정 값을 표시할 자리를 준비합니다. 각 항목은 span 요소로 표시됩니다.
  • Web Vitals 라이브러리
    • web-vitals 라이브러리를 로드합니다. 이 라이브러리는 Core Web Vitals 지표를 쉽게 측정할 수 있는 API를 제공합니다.
  • 지표 측정 및 표시
    • webVitals.getLCP()와 webVitals.getFID(), webVitals.getCLS()를 사용하여 각각의 지표 값을 측정합니다.
    • 측정된 값은 metric.value에서 가져와 toFixed()로 소수점을 정리하고, 페이지의 해당 위치에 값을 업데이트합니다.
    • 예를 들어, LCP 값은 밀리초 단위로 표시되며 FID와 CLS도 각기 다른 방식으로 표시됩니다.

 

3. 실행

  • Core Web Vitals는 사용자 경험을 측정하는 중요한 지표들입니다. 이 값들이 우수한 성과를 나타내면, 페이지가 빠르고 상호작용이 원활하며 안정적인 사용자 경험을 제공한다고 할 수 있습니다.

 

감사합니다.

최근에 올라온 글
Total
Today
Yesterday