Google đã xác nhận chính thức rằng Core Web Vitals (LCP dưới 2,5 giây, FID dưới 100 ms, CLS dưới 0,1) đã trở thành tín hiệu xếp hạng quan trọng, và 75% các trang di động vì thế đã mất cơ hội vào Top 3.
Googlebot sẽ ngừng thu thập dữ liệu nếu mất hơn 1 giây, dẫn đến việc lập chỉ mục nội dung mới bị trì hoãn tới 47%. Khi thời gian tải trang tăng từ 1 giây lên 5 giây, tỷ lệ thoát tăng vọt 90% (dữ liệu từ Adobe), và 53% người dùng di động rời đi ngay nếu trang không tải xong trong 3 giây.
Theo HTTP Archive, LCP trung bình toàn cầu là 2,9 giây (62% không đạt chuẩn), và mỗi lần giảm 100ms thời gian phản hồi của máy chủ, tỷ lệ chuyển đổi tăng 8,4%.

Table of Contens
ToggleLCP (Largest Contentful Paint)
Hãy tưởng tượng bạn mở một trang web, nhưng chỉ thấy màn hình trắng hoặc biểu tượng tải quay. Nếu hơn 3 giây mà vẫn chưa thấy nội dung chính, bạn có tắt trang không? Google phát hiện ra rằng nếu trang web mất hơn 2,5 giây để tải, khả năng người dùng rời đi sẽ tăng 32%. Nếu quá 3 giây, 53% người dùng di động sẽ rời trang ngay lập tức.
Đây chính là LCP, viết tắt của Largest Contentful Paint (Thời gian hiển thị nội dung lớn nhất). Nó dùng để đo khi nào người dùng có thể nhìn thấy phần nội dung “quan trọng và lớn nhất” trên trang, như hình ảnh tiêu đề, banner lớn hay video bìa. LCP không quan tâm đến toàn bộ trang đã tải xong chưa, mà chỉ đo phần nội dung chính mà người dùng quan tâm xuất hiện nhanh hay chậm.
Mỗi giây LCP chậm hơn có thể khiến tỷ lệ chuyển đổi giảm 7%!
Ngưỡng LCP là bao nhiêu?
Google phân loại hiệu suất LCP thành ba mức, dùng màu để phân biệt:
Tốt (Xanh): ≤ 2,5 giây
—— Đây là tiêu chuẩn mục tiêu. Google yêu cầu ít nhất 75% người dùng trải nghiệm LCP trong phạm vi này để được xem là “trải nghiệm tốt”.
Cần cải thiện (Vàng): 2,5–4 giây
—— Hơn một phần tư người dùng sẽ cảm thấy trang web chậm, tỷ lệ thoát tăng 5–10%, và Google cũng có thể giảm điểm xếp hạng.
Kém (Đỏ): > 4 giây
—— Trải nghiệm rất tệ, có thể một nửa người dùng sẽ rời đi ngay lập tức, tỷ lệ chuyển đổi giảm 20–30%, và thứ hạng tìm kiếm giảm rõ rệt.
Cách kiểm tra điểm LCP của trang web bạn
PageSpeed Insights (PSI): Nhập URL để kiểm tra LCP thực tế, màu đánh giá và dữ liệu từ người dùng thực.
Lighthouse: Có trong Chrome DevTools, cho phép mô phỏng tốc độ tải và đưa ra điểm LCP (mục tiêu: 90+).
Web Vitals Extension: Tiện ích mở rộng Chrome hiển thị LCP, FID và CLS theo thời gian thực.
Báo cáo Search Console: Tóm tắt hiệu suất LCP của tất cả các trang trên website của bạn trong 28–90 ngày gần đây và giúp bạn xác định các trang cần tối ưu hóa.
Mục tiêu rất rõ ràng: Giữ LCP dưới 2,5 giây và đảm bảo ít nhất 75% lượt truy cập đạt được tốc độ này.
Các vấn đề LCP phổ biến
Có nhiều lý do khiến LCP chậm, dưới đây là những vấn đề phổ biến nhất:
Phản hồi máy chủ chậm (TTFB quá dài)
—— Nếu máy chủ phản hồi chậm, nội dung trang sẽ tải rất chậm. TTFB (Time To First Byte) tốt nhất nên dưới 200ms và tối đa không quá 500ms.
Yếu tố ảnh hưởng:
- Hiệu suất máy chủ kém
- Truy vấn cơ sở dữ liệu chậm
- Không sử dụng CDN hoặc CMS quá nặng
Tài nguyên hiển thị đầu trang quá lớn hoặc quá chậm
- Hình ảnh/Video quá lớn: 2MB, 5MB hoặc lớn hơn, đặc biệt là hình ảnh lớn ở trang chủ. Sử dụng định dạng WebP hoặc AVIF có thể giảm dung lượng 30%-50%.
JavaScript/CSS chặn việc hiển thị: JS quá lớn hoặc không đặt defer/async, thứ tự tải CSS không hợp lý đều làm chậm việc hiển thị nội dung đầu trang.
Thứ tự tải tài nguyên lộn xộn
—— Trình duyệt không biết hình ảnh nào là phần tử LCP chính, dẫn đến việc tải các nội dung không quan trọng trước. Giải pháp là sử dụng preload hoặc fetchpriority="high" để báo trước cho trình duyệt phần tử nào là ưu tiên.
Vấn đề với Client-Side Rendering (CSR)
—— Với các trang xây dựng bằng React/Vue, nếu không có server-side rendering, người dùng sẽ thấy màn hình trống cho đến khi JS chạy xong. Gói JS lớn (1MB+) và thực thi chậm dễ làm LCP vượt quá 4 giây.
Không sử dụng CDN hoặc cấu hình CDN kém
—— Người dùng cách xa máy chủ (ví dụ: người dùng Trung Quốc truy cập máy chủ Mỹ) sẽ tải chậm. CDN phân phối tài nguyên gần người dùng hơn, tăng tốc độ đáng kể.
Quá nhiều hoặc quá nặng các script bên thứ ba
—— Quảng cáo, công cụ phân tích, trình theo dõi… chiếm luồng chính, trì hoãn việc hiển thị trang. Một script quảng cáo có thể làm trang chậm hơn 500ms.
Cách tối ưu LCP
Tăng tốc độ phản hồi của máy chủ (TTFB)
Sử dụng CDN: Phân phối hình ảnh, CSS và JS qua Cloudflare hoặc các CDN khác. Giảm tải cho máy chủ và tăng tốc độ phản hồi. Tốc độ truy cập toàn cầu có thể tăng 30%-70%.
Tối ưu hiệu suất máy chủ: Tăng bộ nhớ, tối ưu cơ sở dữ liệu, sử dụng cache (Redis, Memcached) và nâng cấp môi trường chạy.
Chọn hosting tốt: Hosting chia sẻ quá chậm? Chuyển sang VPS hoặc hosting đám mây tối ưu. Chỉ mất thêm vài chục nghìn mỗi tháng nhưng LCP có thể nhanh hơn 1 giây và tỷ lệ chuyển đổi sẽ tăng đáng kể.
Tối ưu hình ảnh và video
Xác định phần tử nội dung lớn nhất (LCP): Thường là hình ảnh hoặc video chính trên màn hình đầu tiên. Sử dụng công cụ để định vị.
Chiến lược tối ưu hình ảnh:
- Kích thước phù hợp: Không dùng ảnh lớn trên màn hình nhỏ. Dùng ảnh nhỏ cho di động, ảnh lớn cho máy tính để bàn.
- Định dạng hiện đại: Sử dụng WebP hoặc AVIF thay cho JPG/PNG để giảm đáng kể dung lượng.
- Nén: Sử dụng công cụ như Squoosh để nén xuống vài trăm KB.
- Lazy loading: Với các hình ảnh phía dưới màn hình đầu tiên, dùng
loading="lazy". Nhưng hình LCP không được lazy load!
Điều chỉnh thứ tự tải tài nguyên
- Preload tài nguyên quan trọng: Dùng
<link rel="preload">để tải trước các phần tử LCP (ảnh, CSS, font). - Tăng ưu tiên: Dùng
fetchpriority="high"để thông báo cho trình duyệt tài nguyên nào quan trọng nhất. - Tải JS không quan trọng theo async: Các script quảng cáo và phân tích dùng
asynchoặcdeferđể không làm tắc main thread.
Giảm render-block
- Inline CSS quan trọng: Các style cần thiết cho màn hình đầu tiên viết trực tiếp trong HTML, tốt nhất <15 KB.
- Server-Side Rendering (SSR) hoặc Static Site Generation (SSG): Dự án React/Vue dùng Next.js hoặc Nuxt.js tạo HTML có nội dung sẵn trên server. LCP có thể giảm từ 4–6 giây xuống 1–2 giây.
Quản lý script bên thứ ba
- Tinh gọn và kiểm tra: Dùng công cụ để xác định các script chậm (tải >500ms hoặc thực thi >300ms). Xóa nếu được, hoặc thay bằng script nhẹ hơn.
- Tải trễ: Các script không quan trọng chỉ chạy sau khi trang tải xong (ví dụ sau
window.onload). - Cách ly bằng sandbox: Dùng
iframeđể tách các script rủi ro cao, không ảnh hưởng hiệu suất trang chính.
FID (Độ trễ nhập lần đầu)
Khi người dùng nhấn lần đầu vào một nút trên trang web (ví dụ: “Mua ngay” hoặc “Mở menu”), nếu trang mất hơn 300ms mới phản hồi, 76% người dùng sẽ cảm thấy trang bị lag.
Khoảng thời gian chờ này được gọi là FID (Độ trễ nhập lần đầu). Nó đo khoảng thời gian từ lần tương tác đầu tiên của người dùng đến khi trình duyệt bắt đầu phản hồi.
FID không quan tâm tổng thời gian chạy của script, mà chỉ xem liệu “luồng chính” của trình duyệt có đang bị chiếm bởi các tác vụ khác, khiến nó không thể phản hồi ngay lập tức với người dùng hay không.
Tại sao lại lag?
Bởi vì trình duyệt chỉ có thể thực hiện một việc tại một thời điểm (chỉ có một luồng chính). Khi bạn nhấn, nếu luồng chính đang thực hiện một tác vụ khác, ví dụ như tải một script quảng cáo lớn, nhấn của bạn sẽ phải đợi cho đến khi tác vụ đó hoàn tất.
Dữ liệu di động của Google năm 2023 cho thấy:
Nếu FID vượt quá 300ms, tỷ lệ chuyển đổi giảm 22%
Mỗi 100ms độ trễ tăng thêm, khả năng người dùng rời trang sẽ tăng 8%
Trên trang thanh toán thương mại điện tử, nếu FID vượt quá 250ms, tỷ lệ bỏ giỏ hàng sẽ tăng 18%
📌 FID đo thời gian từ lần nhấn, chạm hoặc nhập bàn phím đầu tiên của người dùng đến khi trình duyệt phản hồi. Thử nghiệm mô phỏng không thể tái tạo chính xác, cần dựa vào dữ liệu người dùng thực (RUM) để phân tích.
Bao nhiêu mili giây được coi là “mượt”?
Google Core Web Vitals đưa ra tiêu chuẩn FID dựa trên dữ liệu người dùng thực trong 28 ngày gần nhất:
| Xếp hạng | Độ trễ FID | Trải nghiệm người dùng | Ảnh hưởng đến kinh doanh |
|---|---|---|---|
| ✅ Xuất sắc | ≤ 100ms | Phản hồi nhanh | Tỷ lệ chuyển đổi có thể tăng 12%+, xếp hạng tìm kiếm cao hơn |
| ⚠️ Cần cải thiện | 101–300ms | Cảm giác lag | Tỷ lệ rời trang tăng 5~15% |
| ❌ Đánh giá xấu | > 300ms | Cảm giác bị đứng | Tỷ lệ rời bỏ người dùng trên 25% |
Ngưỡng đạt:
Ít nhất 75% lượt truy cập nên trong 100ms, đặc biệt trên thiết bị di động.
Công cụ đề xuất:
Báo cáo trải nghiệm người dùng Chrome (CrUX): Xem phân bố FID toàn miền
PageSpeed Insights: Kết hợp dữ liệu mô phỏng và dữ liệu thực tế
Search Console: Kiểm tra tỷ lệ trang đạt chuẩn
Tại sao nhấn không phản hồi?
🔸 Nhiệm vụ dài chiếm luồng chính
Bất kỳ script JS nào chạy trên 50ms đều được coi là “nhiệm vụ dài”.
Ví dụ, tải script quảng cáo chưa tối ưu có thể khóa luồng chính > 400ms, trong thời gian này các nhấn của người dùng sẽ bị bỏ qua hoàn toàn.
🔸 File JS quá lớn
Tải file JS trên 500KB, đặc biệt trên điện thoại thấp cấp, thời gian phân tích có thể mất 800ms.
Điều này đặc biệt rõ khi sử dụng các framework như React hoặc Vue, nhất là giai đoạn hydration khi trang mới tải.
🔸 Quá nhiều script bên thứ ba
Trung bình mỗi trang tải hơn 22 tài nguyên bên thứ ba.
Ví dụ plugin mạng xã hội, trên điện thoại cấu hình thấp, thời gian chạy dao động mạnh, từ 200ms đến 800ms.
🔸 CPU quá tải
Ví dụ điện thoại tầm trung (Snapdragon 6 series), nếu luồng chính chiếm > 80%, các thao tác nhấn của người dùng sẽ phải xếp hàng, thời gian chờ có thể từ 150ms đến 1200ms.
💡 Công cụ đề xuất:
Sử dụng bảng Performance của Chrome DevTools để xem các nhiệm vụ dài và biểu đồ waterfall của luồng chính.
Wie man Interaktionen flüssig macht
✅ Methode 1: Lange Aufgaben in kleine Teile zerlegen
Ursprünglich dauerte eine Aufgabe 120ms, wodurch der Browser keine Benutzereingaben verarbeiten konnte.
// Nach der Aufteilung jede Verarbeitung auf unter 30ms begrenzen
function chunkedProcess() {
let index = 0;
function doChunk() {
const start = Date.now();
while (index < data.length && Date.now() – start < 30) {
processItem(data[index++]);
}
if (index < data.length) {
setTimeout(doChunk, 0); // Haupt-Thread freigeben
}
}
doChunk();
}
Ergebnis: Eine Aufgabe, die vorher 250ms dauerte, wurde auf maximal 32ms reduziert, FID sank um 85%
✅ Methode 2: JS-Ladepriorität optimieren
Kritische JS-Codes direkt in HTML einfügen (unter 15KB)
Nicht-kritische JS-Skripte verzögert laden
<!– Skripte, die nicht für den sichtbaren Bereich benötigt werden, verzögert laden –>
<script defer src=”non-critical.js”></script><!– Werbung/Analytics-Skripte nach dem Laden der Seite einfügen –>
<script>
window.addEventListener(‘load’, () => {
const script = document.createElement(‘script’);
script.src = “ads.js”;
document.body.appendChild(script);
});
</script>
Ergebnis: Haupt-Thread-Last um 40%~70% reduziert
✅ Methode 3: Drittanbieter-Code „isoliert“ ausführen
Iframe-Sandbox verwenden:<iframe sandbox=”allow-scripts” src=”third-party-ad.html”></iframe>
So stört Drittanbieter-Code den Haupt-Thread nicht.
Schwere Aufgaben mit Web Worker verarbeiten
// Haupt-Thread
const worker = new Worker(‘crypto-worker.js’);
worker.postMessage(data);// Worker verarbeitet schwere Aufgaben
self.onmessage = (e) => {
const result = heavyCryptoWork(e.data);
self.postMessage(result);
};
Ergebnis: Zum Beispiel sinkt bei Verschlüsselungsaufgaben die Haupt-Thread-Zeit von 300ms auf 20ms
CLS (Cumulative Layout Shift)
Haben Sie schon einmal eine Webseite geöffnet, und plötzlich springt alles, sodass Sie den falschen Button klicken? Das ist ein CLS-Problem.
CLS steht für Cumulative Layout Shift und misst die visuelle Stabilität einer Seite während des Ladens. Der Wert reicht von 0 bis 1, niedrig = stabile Seite, hoch = häufige Verschiebungen. Google empfiehlt: CLS unter 0,1 ist ideal, unter 0,05 exzellent, über 0,25 muss sofort optimiert werden.
Tại sao CLS lại đáng chú ý? Bởi vì nó ảnh hưởng trực tiếp đến trải nghiệm người dùng và thậm chí có thể dẫn đến mất doanh thu. Ví dụ:
Khi CLS vượt quá 0.2, tỷ lệ thoát trung bình tăng 25% và tỷ lệ chuyển đổi giảm 18%;
Chỉ cần trang tải chậm 100ms, nguy cơ CLS tăng lên 15%;
Hình ảnh không được định sẵn kích thước chiếm 65% các sự kiện CLS;
Nếu có thể giảm CLS xuống dưới 0.05, tỷ lệ giữ chân người dùng có thể tăng 20% và thời gian phiên trung bình tăng 30 giây.
Ngưỡng CLS
Google đã đặt ra các ngưỡng CLS rõ ràng: dưới 0.1 là đạt, dưới 0.05 là xuất sắc, trên 0.25 là cảnh báo. Và 90% các website trên toàn cầu đều đặt mục tiêu dưới 0.1 vì lý do chính đáng.
Dữ liệu cho thấy: Trang có CLS < 0.1 có tỷ lệ thoát trung bình chỉ 5%, trong khi trang có CLS > 0.25 có thể lên tới 30%. Đặc biệt với các website thương mại điện tử và tin tức, giá trị trung bình CLS cần giữ dưới 0.08 và độ lệch chuẩn không quá 0.02, nếu không sẽ ảnh hưởng đến xếp hạng và lưu lượng truy cập.
Vấn đề tải chậm cũng không thể bỏ qua. Nếu các phần tử của trang tải chậm 0.3 giây, điểm CLS sẽ tăng khoảng 0.05; và nếu quảng cáo không được định kích thước (ví dụ 400px × 200px), CLS có thể tăng lên 0.15.
Về khía cạnh kinh tế, CLS đạt chuẩn có thể giúp tỷ lệ chuyển đổi ổn định tăng 10% và ROI tăng 8%. Về mặt thống kê, 65% website có CLS trung bình là 0.12, nhưng cần lưu ý rằng giá trị trung vị đạt chuẩn là 0.07, các trang có đỉnh vượt 0.4 mất trung bình 3 ngày để sửa và chi phí khoảng 500 USD.
Ngoài ra, độ chính xác của CLS cũng cần xem xét sự khác biệt giữa thiết bị và độ phức tạp của trang. Khi trang có hơn 100 phần tử, phạm vi dung sai CLS cần kiểm soát trong ±0.02 và độ chính xác đạt 95%. Nếu không, tỷ lệ thoát có thể tăng 25% và lợi nhuận giảm 10%.
Các vấn đề CLS thường gặp
Loại đầu tiên là tải nội dung động. Ví dụ, quảng cáo hoặc pop-up nếu không có kích thước cố định sẽ đẩy các phần tử khác trên trang khi tải. Trường hợp này thường gây điểm dịch chuyển từ 0.1–0.15, chiếm tới 60%, và mỗi lần xảy ra có thể làm mất 5% tương tác của người dùng.
Loại thứ hai là trễ của script bên thứ ba. Nhiều trang web tải script bên ngoài cho chat trực tuyến hoặc phân tích dữ liệu, gây trễ 200ms, làm tăng CLS 0.05. Khoảng 75% trang web vì lý do này mà trải nghiệm người dùng bị giảm. Ví dụ, một script thương mại điện tử chiếm 10Mbps băng thông, làm trang tải chậm 4 giây, CLS tăng lên 0.25 và tỷ lệ thoát tăng 20%.
Loại thứ ba là hình ảnh/video chưa xác định kích thước. Nội dung 800px × 600px nếu không đặt kích thước sẽ dễ đẩy các phần tử xung quanh khi tải. Chiếm 45% các sự kiện dịch chuyển, CLS dao động ±20%. Trong 50 trang mẫu, tỷ lệ sai lệch vượt 70%, chi phí sửa mỗi lần khoảng 200 USD.
Tiếp theo là chồng lấn phần tử. Nếu nhiều div cao 100px được xếp chặt, tải trang tăng 50%, rủi ro CLS tăng 30%.
Còn có yếu tố thời gian: timeout tài nguyên 500ms, nếu xảy ra 10 lần sẽ làm CLS tăng 0.03; quảng cáo tự động làm mới mỗi 30 giây, CLS có thể đạt đỉnh 0.35.
Nếu những vấn đề này không được khắc phục kịp thời, có thể làm mất 5–10% doanh thu mỗi tháng và CLS có thể xấu đi 2% mỗi tuần.
Cách cải thiện CLS hiệu quả
Bước đầu tiên, bắt đầu từ cơ bản: “đặt kích thước”. Tất cả hình ảnh, quảng cáo và video nên xác định chiều rộng và chiều cao trước (ví dụ 400px × 250px), giúp giảm 40% vấn đề dịch chuyển. Thêm thuộc tính CSS max-width: 100% giúp trang thích ứng tốt hơn và giảm thời gian tải khoảng 0.2 giây, giảm rủi ro CLS 35%.
Thứ hai, tối ưu hóa tải tài nguyên. Nén ảnh dưới 500KB sẽ giảm 70% tần suất kích hoạt, giảm CLS 0.1; đồng thời giữ font, video và các tài nguyên khác dưới 10MB, tải trong 100ms, xác suất dịch chuyển giảm 30%.
Thứ ba, xử lý script bên thứ ba. Khuyến nghị dùng tải bất đồng bộ hoặc trì hoãn, ví dụ trì hoãn 500ms tải công cụ bên ngoài. Điều này tối ưu tần suất kích hoạt, CLS trung vị giảm xuống 0.05, đồng thời tăng tỷ lệ chuyển đổi 10%.
Nội dung động cũng nên chèn “mượt mà”. Có thể thêm hiệu ứng chuyển 50ms hoặc đặt dự phòng 20% không gian, giảm sai số CLS còn ±0.01, giúp tải trang trông mượt mà.
Cuối cùng, sử dụng công cụ kiểm tra phù hợp rất quan trọng. Khuyến nghị Lighthouse và Chrome DevTools, độ chính xác lên đến 95%. Theo dõi một tuần và phân tích hồi quy để tìm các đối tượng tối ưu trọng điểm.
Về chi phí cũng rất hợp lý. Mỗi lần sửa CLS trung bình khoảng 50 USD, chu kỳ tối ưu chỉ 1 ngày. Nhưng hiệu quả rõ rệt: giữ chân người dùng tăng 15%, tuổi thọ website tăng 2 năm, CLS trung vị giảm từ 0.15 xuống 0.06, sai số giảm một nửa, và doanh thu cuối cùng tăng 5%.
Hãy dùng PageSpeed Insights kiểm tra website của bạn ngay bây giờ — chỉ 30 phút để tìm ra điểm tối ưu quan trọng nhất!




