First Contentful Paint (FCP)

Hỗ trợ trình duyệt

  • 60
  • 79
  • 84
  • 14,1

Nguồn

Nội dung đầu tiên hiển thị (FCP) là một chỉ số quan trọng, tập trung vào người dùng để đo lường tốc độ tải nhận thấy. Thuộc tính này đánh dấu điểm đầu tiên trong tiến trình tải trang, tại đó người dùng có thể nhìn thấy mọi nội dung trên màn hình. FCP nhanh giúp người dùng yên tâm rằng điều gì đó đang đang xảy ra.

FCP đo thời gian từ khi người dùng truy cập trang lần đầu tiên cho đến khi phần bất kỳ trong nội dung của trang hiển thị trên màn hình. Đối với chỉ số này, "nội dung" dùng để chỉ văn bản, hình ảnh (bao gồm cả hình nền), phần tử <svg> hoặc các phần tử <canvas> không phải màu trắng.

Tiến trình FCP từ google.com
Trong tiến trình tải này, FCP xảy ra trong khung thứ hai, vì đó là khi phần tử văn bản và hình ảnh đầu tiên hiển thị trên màn hình.

Không phải mọi nội dung đều hiển thị khi phần tử nội dung đầu tiên hiển thị. Đây là một điểm khác biệt quan trọng cần phân biệt giữa FCP và Thời gian hiển thị nội dung lớn nhất (LCP). Chỉ số này đo lường thời điểm nội dung chính của trang tải xong.

Điểm FCP tốt là gì?

Để cung cấp trải nghiệm tốt cho người dùng, các trang web phải có FCP từ 1,8 giây trở xuống. Để đảm bảo rằng bạn đạt được mục tiêu này cho hầu hết người dùng, một ngưỡng tốt để đo lường là phân vị thứ 75 của lượt tải trang, được phân chia trên thiết bị di động và máy tính để bàn.

Giá trị FCP tốt là 1,8 giây trở xuống, giá trị kém lớn hơn 3,0 giây và bất kỳ điều gì ở giữa cần cải thiện
Giá trị FCP tốt là từ 1,8 giây trở xuống. Giá trị kém lớn hơn 3 giây.

Cách đo lường FCP

Bạn có thể đo lường FCP trong phòng thí nghiệm hoặc trong thực tế và tính năng này có sẵn trong các công cụ sau:

Công cụ thực địa

Công cụ cho phòng thí nghiệm

Đo lường FCP trong JavaScript

Để đo lường FCP trong JavaScript, hãy sử dụng Paint Timing API. Ví dụ sau cho biết cách tạo PerformanceObserver để theo dõi mục nhập paint có tên first-contentful-paint và ghi nhật ký mục đó vào bảng điều khiển.

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntriesByName('first-contentful-paint')) {
    console.log('FCP candidate:', entry.startTime, entry);
  }
}).observe({type: 'paint', buffered: true});

Trong ví dụ này, mục nhập first-contentful-paint được ghi lại cho bạn biết thời điểm hiển thị phần tử nội dung đầu tiên. Tuy nhiên, trong một số trường hợp, mục nhập này không hợp lệ để đo lường FCP.

Phần sau đây liệt kê sự khác biệt giữa nội dung API báo cáo và cách tính chỉ số.

Sự khác biệt giữa chỉ số và API

  • API sẽ gửi một mục first-contentful-paint cho các trang được tải trong thẻ nền, nhưng bạn nên bỏ qua các trang đó khi tính FCP. Thời gian hiển thị đầu tiên chỉ được xem xét nếu trang đã ở nền trước trong toàn bộ thời gian.
  • API không báo cáo các mục first-contentful-paint khi trang được khôi phục từ bộ nhớ đệm cho thao tác tiến/lùi, nhưng bạn nên đo lường FCP trong những trường hợp này vì người dùng trải nghiệm chúng dưới dạng lượt truy cập trang khác biệt.
  • API có thể không báo cáo thời gian hiển thị từ các iframe trên nhiều nguồn gốc, nhưng để đo lường FCP đúng cách, bạn phải xem xét tất cả khung hình. Các khung hình phụ có thể sử dụng API để báo cáo thời gian hiển thị của khung hình đó cho khung gốc để tổng hợp.
  • API đo lường FCP từ lần bắt đầu điều hướng, nhưng đối với các trang được kết xuất trước, bạn phải đo lường FCP từ activationStart vì thời gian đó tương ứng với thời gian FCP mà người dùng trải nghiệm.

Thay vì ghi nhớ tất cả những khác biệt nhỏ này, nhà phát triển có thể sử dụng thư viện JavaScript web-vitals để đo lường FCP, giúp xử lý những khác biệt này cho bạn nếu có thể (ngoại trừ trong iframe):

import {onFCP} from 'web-vitals';

// Measure and log FCP as soon as it's available.
onFCP(console.log);

Tham khảo mã nguồn của onFCP() để biết ví dụ hoàn chỉnh về cách đo lường FCP trong JavaScript.

Cách cải thiện FCP

Để tìm hiểu cách cải thiện FCP cho một trang web cụ thể, bạn có thể chạy bài kiểm tra hiệu suất của Lighthouse và chú ý đến mọi cơ hội hoặc thông tin chẩn đoán cụ thể mà cuộc kiểm tra đề xuất.

Để tìm hiểu cách cải thiện FCP nói chung (cho mọi trang web), hãy tham khảo các hướng dẫn sau đây về hiệu suất:

Nhật ký thay đổi

Đôi khi, lỗi được phát hiện trong các API dùng để đo lường chỉ số và đôi khi trong phần định nghĩa của chính các chỉ số. Do đó, đôi khi bạn phải thực hiện các thay đổi và những thay đổi này có thể hiển thị dưới dạng mức độ cải thiện hoặc mức độ hồi quy trong báo cáo nội bộ và trang tổng quan của bạn.

Để giúp bạn quản lý việc này, tất cả các thay đổi đối với cách triển khai hoặc định nghĩa các chỉ số này sẽ xuất hiện trong Nhật ký thay đổi này.

Nếu bạn muốn gửi ý kiến phản hồi về các chỉ số này, hãy gửi ý kiến phản hồi trong nhóm Google có chỉ số quan trọng trên web.