On-Page SEO

First Input Delay (FID)

Chỉ số đo độ trễ phản hồi đầu tiên của người dùng, mục tiêu ≤100ms (đã thay thế bởi INP từ 2024).

2 lượt xem Cập nhật: 27/05/2026

First Input Delay (FID) là gì?

First Input Delay (FID) là chỉ số đo thời gian từ lúc người dùng tương tác lần đầu với trang web (như nhấn nút, chọn menu, nhập vào ô tìm kiếm) đến khi trình duyệt thực sự bắt đầu xử lý sự kiện đó. Đơn vị tính là mili giây (ms). Giá trị FID thấp cho thấy trang phản hồi nhanh và mượt — điều người dùng cảm nhận rõ nhất khi lướt web.

FID chỉ được tính trên các tương tác đầu tiên trong phiên duyệt, và chỉ áp dụng cho các trang có nội dung đã tải xong phần HTML nhưng chưa sẵn sàng xử lý tương tác do JavaScript đang chiếm dụng luồng chính. Chỉ số này không đo độ trễ của thao tác cuộn (scroll) hay phóng to/thu nhỏ (zoom), vì đây là những hành động do trình duyệt xử lý độc lập.

Từ tháng 3/2024, Google chính thức thay thế FID bằng Interaction to Next Paint (INP) trong bộ chỉ số Core Web Vitals. Tuy nhiên, FID vẫn được hỗ trợ để theo dõi ngược (retrospective analysis), và hiểu rõ FID giúp bạn nắm vững nền tảng tối ưu hiệu năng tương tác — điều INP cũng kế thừa và mở rộng.

Tại sao quan trọng trong SEO?

FID từng là một trong ba chỉ số Core Web Vitals bắt buộc để đạt trạng thái "Tốt" trong báo cáo Search Console và ảnh hưởng trực tiếp đến xếp hạng tìm kiếm trên thiết bị di động từ năm 2021. Dù không còn là chỉ số xếp hạng chính thức từ 2024, FID vẫn giữ vai trò then chốt vì:

  • Phản ánh trải nghiệm người dùng thực tế: Nếu trang chậm phản hồi khi nhấn nút đăng ký, 73% người dùng có thể rời đi ngay — theo nghiên cứu của Akamai (2023);
  • Là chỉ báo sớm về vấn đề JavaScript quá tải hoặc render blocking — nguyên nhân phổ biến gây tụt thứ hạng;
  • Hỗ trợ chẩn đoán sâu cho INP: Các yếu tố làm FID cao (ví dụ: script dài, không phân chia tác vụ) thường cũng kéo INP lên cao;
  • Vẫn được các công cụ như Lighthouse, CrUX Dashboard và PageSpeed Insights hiển thị trong chế độ tương thích.

Cách hoạt động

FID đo khoảng thời gian giữa hai mốc:

  1. Thời điểm người dùng tương tác: Khi sự kiện đầu tiên xảy ra (click, tap, keypress — trừ scroll/zoom);
  2. Thời điểm trình duyệt bắt đầu xử lý: Khi luồng chính (main thread) rảnh để chạy event listener hoặc xử lý logic liên quan.

Chỉ những tương tác xảy ra sau khi tài nguyên HTML được phân tích xong (DOMContentLoaded) và trước khi trang hoàn toàn ổn định mới được tính. Nếu người dùng nhấn nút trong lúc trang đang tải font hoặc hình ảnh, FID sẽ không ghi nhận — vì lúc đó trình duyệt chưa sẵn sàng xử lý tương tác.

FID không phải là tổng thời gian xử lý sự kiện, mà chỉ là độ trễ chờ. Một sự kiện có thể mất 500ms để hoàn tất, nhưng nếu trình duyệt bắt đầu xử lý sau 80ms kể từ lúc nhấn — thì FID = 80ms.

Hướng dẫn thực hiện

Để đo và cải thiện FID, bạn cần kết hợp công cụ đo lường và tối ưu kỹ thuật:

  1. Đo FID thực tế: Sử dụng Chrome User Experience Report (CrUX) hoặc báo cáo Core Web Vitals trong Google Search Console. Đây là dữ liệu từ người dùng thật, đáng tin cậy nhất.
  2. Đo FID trong phòng thí nghiệm: Chạy Lighthouse (ở chế độ 'Performance') trên trang ở chế độ thiết bị di động, với mạng 3G và CPU bị giới hạn 4x. Lưu ý: FID trong Lighthouse là ước lượng — không phải giá trị thực tế.
  3. Tối ưu JavaScript:
    • Chia nhỏ script lớn thành các phần nhỏ hơn (code splitting);
    • Sử dụng async hoặc defer cho script không cần thiết ngay lập tức;
    • Loại bỏ hoặc trì hoãn các thư viện nặng (ví dụ: analytics, chat widget) cho đến sau khi người dùng tương tác.
  4. Giảm thời gian xử lý trên luồng chính: Tránh các hàm dài (>50ms), dùng requestIdleCallback() cho tác vụ nền, và chuyển xử lý nặng sang Web Worker.
  5. Kiểm tra lại các plugin CMS: Một số plugin WordPress (đặc biệt là form builder, popup, slider) thường chặn luồng chính bằng script đồng bộ — nên kiểm tra bằng Performance tab trong DevTools.

Lỗi thường gặp

Lỗi Dấu hiệu Cách khắc phục
Script JavaScript đồng bộ tải sớm FID > 300ms ngay trên trang chủ, dù nội dung nhẹ Thay <script src="..."></script> bằng <script async src="..."></script> hoặc defer; kiểm tra thứ tự tải trong Network tab.
Render-blocking CSS/JS từ bên thứ ba FID tăng mạnh sau khi bật plugin chat hoặc quảng cáo Tải các script bên thứ ba sau sự kiện user interaction hoặc dùng iframes cách ly; áp dụng lazy-load cho widget không hiển thị ngay.
Không phân chia tác vụ (long tasks) Trong Performance tab: xuất hiện task > 200ms ngay sau load Chia nhỏ vòng lặp lớn, dùng setTimeout hoặc queueMicrotask để nhường luồng; kiểm tra bằng Optimize Long Tasks.

Ví dụ thực tế

Một website thương mại điện tử tại Việt Nam ghi nhận FID trung bình là 240ms trên thiết bị di động (theo CrUX). Sau khi phân tích bằng Lighthouse, nhóm phát triển phát hiện script quản lý giỏ hàng (cart.js) được tải đồng bộ trong <head>, chiếm 320ms luồng chính. Họ áp dụng 3 thay đổi:

  • Chuyển cart.js sang defer và tải sau DOMContentLoaded;
  • Chia chức năng cập nhật số lượng sản phẩm thành module riêng, chỉ tải khi người dùng mở giỏ;
  • Thay thế đoạn mã tính toán khuyến mãi bằng Web Worker.

Sau 2 tuần triển khai, FID giảm còn 68ms (dưới ngưỡng 100ms), tỷ lệ thoát trên trang sản phẩm giảm 19%, và thời gian chuyển đổi (conversion time) rút ngắn trung bình 1,8 giây.

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

FID có còn ảnh hưởng đến SEO sau khi Google thay bằng INP?

Có, nhưng gián tiếp. Google không còn dùng FID để xếp hạng, nhưng các nguyên nhân gây FID cao (JavaScript nặng, long tasks) cũng là nguyên nhân chính khiến INP cao. Tối ưu FID vẫn là bước nền tảng để đạt INP < 200ms — ngưỡng mới được đánh giá là "Tốt".

FID đo trên thiết bị nào? Có khác biệt giữa máy tính và điện thoại?

FID chủ yếu được đo trên thiết bị di động trong điều kiện mạng chậm và CPU bị giới hạn — vì đây là môi trường dễ bộc lộ độ trễ nhất. Trên máy tính, FID thường rất thấp (dưới 20ms) nên ít được quan tâm. Báo cáo CrUX phân tách dữ liệu theo thiết bị, nên bạn luôn nên kiểm tra riêng nhóm mobile.

Có thể đo FID bằng công cụ nào miễn phí?

Các công cụ miễn phí đáng tin cậy gồm: Google Search Console (báo cáo Core Web Vitals), PageSpeed Insights (cho dữ liệu lab + field), và Chrome DevTools → tab Performance (khi ghi lại tương tác thực tế). Lưu ý: Công cụ bên thứ ba như GTmetrix hay Pingdom không đo FID — chúng chỉ báo cáo các chỉ số khác như TTFB hay LCP.