Bỏ qua tới nội dung
Performance· ·9 phút đọc

FCP và LCP khác nhau ra sao (hai mốc render dễ nhầm)

Nguyen Hien
FCP và LCP khác nhau ra sao (hai mốc render dễ nhầm)
Cỡ chữ

Hai chỉ số này hay bị gộp làm một vì cùng đo “trang hiện ra nhanh hay chậm”, nhưng chúng trả lời hai câu hỏi khác nhau. Một cái nói “đã có gì đó xuất hiện chưa”, một cái nói “nội dung chính đã sẵn sàng chưa”. Hiểu đúng ranh giới giữa chúng giúp bạn biết đang sửa nhầm chỗ hay đúng chỗ khi điểm tốc độ thấp.

So do dong thoi gian tai trang danh dau hai moc FCP va LCP
FCP đánh dấu pixel đầu tiên hiện ra, LCP đánh dấu khối nội dung lớn nhất vẽ xong.

Hai mốc render, hai ý nghĩa khác nhau

Khi trình duyệt tải một trang, màn hình không chuyển từ trắng sang đầy đủ trong một nhịp. Nó hiện dần: trắng → một dòng chữ → ảnh bìa → đủ nội dung. FCP và LCP cắm cọc ở hai thời điểm khác nhau trên dòng thời gian đó.

  • FCP là lúc trình duyệt vẽ bất kỳ nội dung nào đầu tiên: một dòng chữ, một icon SVG, một ảnh nền, hay một ô canvas không trắng. Đây là tín hiệu “trang đang sống” gửi tới mắt người dùng — họ thôi nhìn màn hình trắng.
  • LCP là lúc phần tử có diện tích lớn nhất trong vùng nhìn thấy (viewport — khung màn hình đang hiển thị) render xong. Thường là ảnh bìa hero, một khối ảnh lớn, hoặc một đoạn tiêu đề cỡ to. Đây là tín hiệu “nội dung chính đã ở đây”.

Ví dụ dễ hình dung: trang vẽ xong tiêu đề trong 0,4 giây (FCP), nhưng ảnh hero nặng phải đợi thêm 2 giây mới hiện (LCP). Cùng một trang, hai con số cách nhau xa.

Bảng so sánh nhanh

Tiêu chíFCPLCP
Đo cái gìPixel nội dung đầu tiên hiệnPhần tử lớn nhất viewport hiện xong
Phần tử tínhChữ, ảnh, SVG, canvas không trắngẢnh, video poster, khối chữ lớn
Ngưỡng “Good” (p75)≤ 1,8 giây≤ 2,5 giây
Vai tròChỉ số chẩn đoán (diagnostic)Core Web Vital chính thức
Ảnh hưởng xếp hạngGián tiếpTrực tiếp (tín hiệu trải nghiệm)

Lưu ý quan trọng: chỉ LCP là một trong ba Core Web Vital chính thức (cùng INP và CLS). FCP là chỉ số chẩn đoán bổ trợ — Google không dùng nó làm tín hiệu trải nghiệm trang trực tiếp, nhưng nó cực hữu ích để truy nguyên vì sao LCP chậm. Ngưỡng đều đo ở phân vị 75 (p75 — 75% lượt truy cập phải đạt mới coi là tốt).

Khi nào quan tâm chỉ số nào

Quy tắc đơn giản: LCP là đích, FCP là đèn chẩn đoán trên đường tới đích đó.

Khi FCP đã chậm

Nếu chính FCP cao (trên 1,8 giây), nghĩa là trình duyệt mất quá lâu mới vẽ được thứ đầu tiên. Gần như chắc chắn vấn đề nằm ở khâu trước khi render: máy chủ trả về chậm, hoặc tài nguyên chặn render (render-blocking — CSS/JS phải tải xong mới cho vẽ) đứng chắn đường. Lúc này FCP chậm thì LCP cũng chậm theo, vì LCP không thể nhanh hơn FCP. Sửa gốc ở đây trước.

Khi FCP nhanh nhưng LCP chậm

Đây là tình huống hay gặp nhất và cũng dễ chẩn đoán nhờ FCP. Trang hiện chữ rất nhanh (FCP tốt) nhưng ảnh hero hoặc khối nội dung chính ì ạch (LCP xấu). Khoảng cách giữa FCP và LCP chính là phần bạn cần đào: thường là một ảnh nặng chưa tối ưu, tải trễ, hoặc phải đợi font/JS mới dựng được phần tử lớn nhất.

Nói cách khác, so FCP với LCP cho bạn biết nút thắt nằm ở “khởi động” hay ở “phần tử lớn nhất”. Đó là lý do hai chỉ số nên đọc cùng nhau, không thay thế nhau.

Cách cải thiện FCP

FCP gần như luôn được kéo lên bằng cách dọn đường cho lần vẽ đầu tiên:

  • Giảm thời gian máy chủ trả về — FCP không thể nhanh hơn TTFB. Nếu mốc đầu vào đã chậm thì mọi thứ chậm theo (xem bài kỹ thuật giảm TTFB chuyên sâu).
  • Loại tài nguyên chặn render — gỡ CSS/JS không cần thiết ra khỏi đường tải đầu, tách phần CSS quan trọng (critical CSS) để vẽ được ngay.
  • Preconnect tới origin cần dùng — báo trước cho trình duyệt kết nối sớm tới CDN, máy chủ font.
  • Đảm bảo chữ hiện ngay khi font đang tải — dùng font-display: swap để không bị màn trắng vì chờ webfont.
<link rel="preconnect" href="https://cdn.example.com">
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>

/* font-display: swap để chữ hiện ngay, không chờ tải font */
@font-face{ 
  font-family: "Inter";
  src: url("/fonts/inter.woff2") format("woff2");
  font-display: swap;
 }

Cách cải thiện LCP

LCP thường xoay quanh chính phần tử lớn nhất — đa số là ảnh bìa:

  • Tối ưu phần tử LCP trực tiếp — nén ảnh, dùng định dạng hiện đại, đặt kích thước đúng. Đây là bước tác động mạnh nhất.
  • Preload ảnh LCPkhông lazy-load nó — phần tử lớn nhất trên đầu trang cần tải ngay, không trì hoãn.
  • Khai báo fetchpriority="high" cho ảnh hero để trình duyệt ưu tiên.
<!-- Ảnh hero (phần tử LCP): ưu tiên cao, KHÔNG lazy-load -->
<link rel="preload" as="image" href="/hero.avif" fetchpriority="high">
...
<img src="/hero.avif" width="1200" height="630"
     fetchpriority="high" alt="...">

Chi tiết đầy đủ về cách đo và tối ưu LCP nằm ở bài tối ưu và cách đo LCP. Cả hai chỉ số đều là mảnh ghép trong bức tranh Core Web Vitals 2026.

Góc thực chiến từ web22.dev

Khi vận hành web22.dev trên LiteSpeed (web server) cộng Cloudflare (CDN — mạng phân phối nội dung), một điều thấy rõ là: cache trang và localize font kéo FCP xuống trước, vì chúng cắt đứt phần chờ máy chủ và chờ font. Còn LCP thì phải đụng vào đúng ảnh hero — đổi sang AVIF, preload, gỡ lazy-load. Sửa FCP không tự kéo LCP về đích nếu ảnh lớn vẫn nặng; đó đúng là lúc khoảng cách FCP–LCP chỉ thẳng vào thủ phạm.

Câu hỏi thường gặp

FCP có phải Core Web Vital không?

Không. Ba Core Web Vital chính thức là LCP, INP và CLS. FCP là chỉ số chẩn đoán bổ trợ, giúp truy nguyên vì sao loading chậm chứ không phải tín hiệu xếp hạng trực tiếp.

LCP có thể nhanh hơn FCP không?

Không thể. LCP luôn xảy ra tại hoặc sau FCP, vì phần tử lớn nhất chỉ render sau khi nội dung đầu tiên đã hiện. Nếu FCP chậm, hãy sửa FCP trước.

Nên ưu tiên tối ưu cái nào?

Ưu tiên LCP vì nó ảnh hưởng trực tiếp tới đánh giá trải nghiệm trang. Nhưng dùng FCP để chẩn đoán: FCP chậm thì sửa khâu khởi động; FCP nhanh mà LCP chậm thì sửa phần tử lớn nhất.

Nếu bạn muốn rút ngắn cả hai mốc render trên một site WordPress đang chậm, tham khảo dịch vụ tối ưu tốc độ website của Web22.

Đọc tiếp

Bài viết
cùng chủ đề.

Tất cả bài viết