Đầu tiên Contentful Paint (FCP)

Điều gì Đầu tiên Contentful Paint measures, điều gì là một good FCP score, vì sao điều này không một Cốt lõi Web Vital, cách điều này differs từ Đầu tiên Paint và LCP, và cách sửa một chậm một.

Xuất bản lần đầu: 26 thg 6, 2026 · Cập nhật lần cuối: 22 thg 8, 2026 · Advanced
Ngôn ngữ

Đầu tiên Contentful Paint (FCP) là đó time từ khi một trang bắt đầu loading để khi bất kỳ part of của nó nội dung — text, image, SVG, hoặc non-white canvas — đầu tiên renders. Good là ≤1,8 s tại đó 75th percentile of real người dùng. Điều này không phải một Cốt lõi Web Vital: đó các tín hiệu xếp hạng là LCP, INP, và CLS. FCP là một diagnostic chỉ số (lab và trường) đó là một building block of LCP — điều này happens tại hoặc trước LCP — so đây là mainly hữu ích cho catching render-blocking các tài nguyên và chậm TTFB. Trong Lighthouse 10 đây là 10% of đó Performance score. Cách sửa điều này by eliminating render-blocking CSS/JS, cutting TTFB, inlining cốt yếu CSS, dùng font-display: đổi, và preconnecting để bắt buộc origins.

Tóm tắt — FCP là time từ navigation bắt đầu để Khi bất kỳ nội dung trang (text, image, <svg>, hoặc non-white <canvas>) đầu tiên renders. nó là không Cốt lõi Web Vital — nó supplementary, lab--trường diagnostic chỉ số, và building block của LCP (FCP happens tại hoặc trước khi LCP). Trường thresholds (p75): Good ≤ 1,8 s, cần-improvement ≤ 3,0 s, poor > 3,0 s. Trong Lighthouse 10 nó 10% của Performance score. vì FCP clock bắt đầu tại navigation — nó bao gồm chuyển hướng time, connection setup, và TTFB — lab (Lighthouse) và trường (CrUX) numbers thường diverge. khắc phục nó nơi nó lives: render-blocking CSS/JS đầu tiên, sau đó TTFB, sau đó fonts.

Điều gì FCP measures (precisely)

Google definition, từ Philip Walton web.dev bài viết, là đó độ chính xác spine ở đây: “First Contentful Paint (FCP) measures the time from when the user first navigated to the page to when any part of the page’s content is rendered on the screen.” (bản dịch) «Đầu tiên Contentful Paint (FCP) measures đó time từ khi người dùng đầu tiên navigated để đó trang để khi bất kỳ part of đó trang nội dung là được kết xuất on đó screen.» “Nội dung,” theo đó giống nhau doc, có nghĩa là “text, images (including background images), <svg> elements, or non-white <canvas> elements.” (bản dịch) «text, images (including background images), <svg> elements, hoặc non-white <canvas> elements.»

Đó word đó làm all đó hoạt động là bất kỳ. FCP không care điều gì renders — một 40-pixel logo được tính đó giống nhau as một đầy đủ hero image. đây là đó “is anything on screen yet?” (bản dịch) «là bất cứ điều gì on screen tuy vậy?» tín hiệu, mà là chính xác vì sao đây là an sớm indicator thay vì một completion chỉ số.

Evidence for this claim FCP measures from navigation until the first text, image, SVG, or non-white canvas content is rendered. Scope: Current web.dev FCP definition and qualifying content types. Confidence: high · Verified: web.dev: First Contentful Paint

Một detail đó là easy để miss và thay đổi cách bạn đọc đó number: FCP clock bắt đầu tại navigation, so điều này bundles trong mọi thứ đó happens trước của bạn HTML là even parsed. Google own Key Point: “FCP includes any unload time from the previous page, connection set up time, redirect time, and Time To First Byte (TTFB) which can be significant when measured in the field.” (bản dịch) «FCP bao gồm bất kỳ unload time từ đó trước đó trang, connection set lên time, chuyển hướng time, và Time Để Đầu tiên Byte (TTFB) mà có thể là significant khi measured trong đó trường.» MỘT máy chủ đó takes 1,5 s để respond có đã burned hầu hết of của bạn 1,8 s budget trước đó trình duyệt có processed một single byte.

FCP không phải Cốt lõi Web Vital

Let me là blunt về điều này vì phần lớn các trang hedge nó: FCP không phải Cốt lõi Web Vital và không phải part của Google các tín hiệu xếp hạng. Core Web Vitals là LCP, INP, và CLS — và FCP không phải mentioned anywhere on Google Tìm kiếm xếp hạng Core Web Vitals trang.

Điều gì FCP , trong Google taxonomy, là an “Other Web Vital” (bản dịch) «Other Web Vital» — một supplementary chỉ số đó là hữu ích cho diagnosis. web.dev puts điều này way: “the metrics Time to First Byte (TTFB) and First Contentful Paint (FCP) are both vital aspects of the loading experience, and are both useful in diagnosing issues with LCP (slow server response times or render-blocking resources, respectively).” (bản dịch) «đó các chỉ số Time để Đầu tiên Byte (TTFB) và Đầu tiên Contentful Paint (FCP) là cả hai vital aspects of đó loading experience, và là cả hai hữu ích trong diagnosing các vấn đề với LCP (chậm máy chủ phản hồi times hoặc render-blocking các tài nguyên, respectively).»

So honest framing cho stakeholders là hai-sided, và bạn nên state cả hai halves không có flinching:

  • FCP không ảnh hưởng thứ hạng trực tiếp. không optimize FCP “cho SEO.”
  • FCP là great diagnostic cho LCP, mà làm ảnh hưởng thứ hạng. Render-blocking các tài nguyên hiển thị lên trong FCP đầu tiên.

FCP so với đầu tiên Paint (FP)

những điều này nhận conflated constantly:

  • Đầu tiên Paint (FP) fires khi đó trình duyệt paints bất cứ điều gì tại all — including một bare background color với không thực tế nội dung.
  • FCP fires chỉ khi eligible nội dung renders: text, images (including background images), <svg> elements, hoặc non-white <canvas> elements. đó là một cụ thể, spec-được định nghĩa list — không một lỏng “any DOM content” (bản dịch) «bất kỳ DOM nội dung» rule — và đây là worth giữ precise, since một background image được tính mặc dù điều này không text trong đó DOM.

So FP ≤ FCP, luôn. On phần lớn các trang họ’re nearly giống hệt, vì việc vẽ background color với Không có nội dung on top là rare. Khi ở đó có ý nghĩa khoảng trống, nó thường có nghĩ là cosmetic background painted trước khi bất kỳ nội dung thực đã làm. Paint Timing API trả về cả hai first-paintfirst-contentful-paint entries — nhưng FCP là một worth analyzing; FP rarely tells bạn bất cứ điều gì actionable.

FCP so với LCP

khác pair mọi người hợp nhất:

  • FCP = Khi bất kỳ nội dung paints. Fires sớm. Có thể là tiny logo hoặc nav link.
  • LCP = Khi largest element trong viewport renders. Fires tại hoặc sau khi FCP.

Google wording: FCP measures khi bất kỳ nội dung là painted và LCP khi đó main nội dung là painted, so LCP là dự kiến để là hơn selective. Đọc đó as “more selective,” (bản dịch) «hơn selective,» không “certified correct” (bản dịch) «certified correct» — neither chỉ số proves đó trang thực tế main nội dung là hoàn tất hoặc hữu ích để đó khách truy cập. FCP chỉ xác nhận điều gì đó eligible painted; LCP xác nhận đó largest eligible candidate đã làm. MỘT trang có thể có một fast FCP (logo tại 0,5 s) và một chậm LCP (hero image tại 4 s) — đó khoảng trống là itself một hữu ích diagnostic. Và nếu của bạn FCP là close để của bạn LCP, đó là thường một good sign: điều này có nghĩa là đó đầu tiên điều painted là cũng đó largest một, với không wasted sớm-paint on chrome đó không quan trọng để người dùng.

Evidence for this claim FCP answers when any eligible content first appears, while LCP tracks the largest eligible viewport candidate; neither metric proves the page's main content is complete or useful. Scope: field and lab Confidence: high · Verified: First Contentful Paint (FCP)

Một việc đo lường oddity worth knowing: vì của security restrictions on cross-origin image timing, trình duyệt API có thể trong rare cases báo cáo LCP trước đó hơn FCP. đó việc đo lường artifact, không điều gì đó physically happened.

Thresholds — và Vì sao lab và trường disagree

Trường thresholds (CrUX, p75): Good ≤ 1,8 s · cần improvement ≤ 3,0 s · poor > 3,0 s. Google hướng dẫn là để đo lường tại 75th percentile của trang loads, split across mobile và desktop.

Evidence for this claim A good FCP is 1.8 seconds or less at the 75th percentile; above 3 seconds is poor. Scope: Current web.dev FCP field thresholds. Confidence: high · Verified: web.dev: First Contentful Paint

Nhưng Lighthouse desktop dùng khác nhau, stricter cutoffs — green là roughly 0–0,9 s, orange 0,9–1,6 s, red over 1,6 s — vì đó lab chạy một sạch, throttled Chrome on một simulated device, không thực tế conditions. (Những bands, như đó score weights dưới, là Lighthouse-version-cụ thể — này reflects đó hiện tại audit doc as of này writing.) Đó Lighthouse FCP score là “a comparison of your page’s FCP time and FCP times for real websites, based on data from the HTTP Archive.” (bản dịch) «một so sánh of trang của bạn FCP time và FCP times cho real websites, dựa trên dữ liệu từ đó HTTP Archive.»

Đây là single phần lớn phổ biến nguồn của FCP confusion, so internalize nó:

** 1,8 s “good” line là trường (CrUX p75) ngưỡng. Lighthouse desktop “green” line là ~0,9 s. họ là khác scales cho khác jobs.**

Trường và lab numbers diverge mainly vì họ sample khác populations, không vì một là universally “hơn đúng.” Lighthouse chạy single sạch session on fixed device/network conditions. Trường/CrUX aggregates thực devices, thực networks, bộ nhớ đệm trạng thái, và navigation types — including back/forward-bộ nhớ đệm restores và prerendered các trang, mà không tự động nhận fresh FCP way thông thường navigation làm; họ cần của họ own lifecycle xử lý ( web-chỉ số quan trọng library làm điều này cho bạn). On phần lớn các trang trường number làm đọc cao hơn — thực người dùng carry chuyển hướng chains, trước đó- trang unload time, và cold connections lab chạy skips — nhưng đó tendency, không rule. trước khi reading lab/trường khoảng trống as vấn đề, kiểm tra bạn’re comparing như-cho-như (giống nhau device class, giống nhau network conditions). sử dụng trường dữ liệu cho của bạn thực-world number và Lighthouse cho diagnosis.

nơi FCP sits trong Lighthouse score

Trong Lighthouse 10 — hiện tại version as của điều này writing, không vĩnh viễn hình — FCP là 10% của Performance score. đầy đủ weighting:

Chỉ sốWeight
Total Blocking Time (TBT)30%
Largest Contentful Paint (LCP)25%
Cumulative Layout Shift (CLS)25%
đầu tiên Contentful Paint (FCP)10%
Speed chỉ mục10%

Performance score là weighted average của individual chỉ số scores, và Google notes weightings thay đổi theo thời gian as của họ research evolves — FCP có held tại 10% từ Lighthouse 8 qua 10, nhưng xác nhận so với whatever version bạn’re đang chạy trước khi treating “10%” as timeless. practical đọc: perfect FCP có thể chỉ move của bạn Lighthouse number so far — và bad FCP thường points tại bad LCP cũng (họ share root gây ra), though đó overlap worth kiểm tra, không điều gì đó score bảo đảm.

Điều gì gây ra chậm FCP

Trong rough priority order:

  1. Render-blocking các tài nguyên — #1 killer. CSS và synchronous JS trong <head> force trình duyệt để chờ: nó có thể’t xây dựng CSSOM và render tree, so nó có thể’t paint bất cứ điều gì, cho đến khi những điều đó files là downloaded và parsed.
  2. Cao TTFB — FCP có thể’t fire trước khi bytes arrive. chậm máy chủ là đầu tiên domino, và nó bên trong FCP việc đo lường.
  3. chuyển hướng chains — mỗi chuyển hướng là đầy đủ round-trip đã thêm trước khi đầu tiên byte.
  4. Webfont loading strategyfont-display: block (hoặc không rule) có thể leave text invisible cho lên để ~3 seconds. Even nếu paint technically fires on background, người dùng sees không có gì hữu ích.

Cách khắc phục nó

đầy đủ list, nhưng với priority order tài liệu không cho bạn. những điều này là phổ biến levers, không universal ones — kiểm tra của bạn own trace hoặc filmstrip đầu tiên để see mà tài nguyên hoặc phase là thực ra delaying của bạn FCP candidate trước khi reaching cho các cách sửa (preconnect, preload, font-display thay đổi) đó có thể không apply để của bạn trang:

Làm những điều này đầu tiên (biggest wins):

  • Eliminate render-blocking CSS và JavaScript. Inline cốt yếu, trên—fold CSS trực tiếp trong <head>; load rest asynchronously; thêm async/defer để non-cốt yếu scripts. Repositioning <link> tag làm không help — trình duyệt sẽ không paint cho đến khi all CSS là loaded và parsed regardless của nơi tag sits.
  • Reduce TTFB (máy chủ phản hồi time). bộ nhớ đệm, CDN, nhanh hơn origin — bất cứ điều gì đó nhận đầu tiên byte out sooner trực tiếp shaves FCP.
  • khắc phục font loading. sử dụng font-display: swap (hiển thị fallback text immediately, swaps trong web font Khi ready) hoặc font-display: optional (skips web font nếu nó không phải đã được lưu đệm). tránh font-display: block cho cốt yếu text — nó worst cho FCP.

sau đó tidy lên rest:

  • Preconnect để bắt buộc origins với <link rel="preconnect"> — establishing sớm connections để quan trọng thứ ba-party origins có thể save 100–500 ms.
  • Preload mấu chốt các yêu cầu (<link rel="preload">) cho cốt yếu font hoặc LCP image.
  • Minify CSS, xóa unused CSS, xóa unused JavaScript — nhỏ hơn files parse và unblock paint nhanh hơn.
  • tránh multiple các chuyển hướng, tránh enormous network payloads, phục vụ static assets với efficient bộ nhớ đệm policy, tránh excessive DOM size, và minimize cốt yếu yêu cầu depth. Chung payload hygiene đó all feeds đầu tiên paint.

FCP → TTFB → LCP diagnostic chain

Đây là Cách I’d thực ra sử dụng FCP, và nó framing tài liệu gesture tại nhưng không develop. Treat three loading các chỉ số as một workflow:

  1. FCP là cao → kiểm tra cho render-blocking các tài nguyên (CSS/JS trong <head>). đó phần lớn phổ biến nguyên nhân và fastest win.
  2. cũng kiểm tra TTFB — vì FCP bao gồm nó, chậm máy chủ inflates FCP trước khi bất kỳ render-blocking even enters picture. web.dev hướng dẫn: vì TTFB precedes cả hai FCP và LCP, của bạn máy chủ nên respond fast đủ đó 75th percentile của người dùng hit “good” FCP.
  3. những điều này giống nhau các vấn đề thường cascade vào LCP — chỉ số đó thực ra xếp hạng tín hiệu — vì FCP và LCP frequently share root gây ra. đó overlap worth kiểm tra, không bảo đảm: LCP có factors của nó own ( size, priority, và load path của nó cụ thể largest element), so sửa FCP gây ra không promise fixed LCP. nó right đầu tiên place để look, không cuối cùng step.

đó giá trị của FCP cho SEO: nó cheap, sớm đọc on liệu loading path là healthy, trước khi nhiều hơn selective LCP việc đo lường even completes.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.