First Input Delay (FID)
Tìm hiểu về FID - chỉ số từng thuộc Core Web Vitals dùng để đo độ trễ của tương tác đầu tiên, lý do lịch sử và vì sao nó bị thay thế bởi INP từ tháng 3/2024.
Cấu trúc cơ học và cách tính FID
**First Input Delay (FID)** đo khoảng thời gian từ khi người dùng tương tác *lần đầu tiên* với trang web (ví dụ: click vào một liên kết, tap vào một nút, hoặc nhấn một phím bất kỳ) cho đến khi trình duyệt *bắt đầu* có khả năng xử lý event handler để phản hồi lại tương tác đó.
FID thực chất chỉ đo phần **Input Delay** (Độ trễ đầu vào) - tức là thời gian sự kiện phải xếp hàng chờ trong Event Loop. Độ trễ này xảy ra khi luồng chính (Main Thread) của trình duyệt đang bận xử lý một tác vụ JavaScript dài (Long Task) khác được tải về từ trang web, khiến trình duyệt không thể tiếp nhận và xử lý tương tác của người dùng ngay lập tức.
VÌ SAONếu một Long Task đang thực thi trên Main Thread khi người dùng tương tác, trình duyệt phải đợi task đó hoàn thành xong mới có thể chạy event listener tương ứng. Khoảng thời gian chờ đợi này chính là giá trị FID.
CẢNH BÁOFID chỉ đo phần trễ trước khi handler bắt đầu chạy. Nó hoàn toàn bỏ qua thời gian chạy của bản thân event handler và thời gian trình duyệt vẽ (paint) kết quả cập nhật giao diện lên màn hình.
Lý do chí mạng khiến FID bị khai tử
Mặc dù FID từng là một trong ba chỉ số Core Web Vitals cốt lõi, nó có hai nhược điểm lớn làm giảm giá trị đo lường thực tế:
1. **Chỉ đo tương tác đầu tiên**: Trải nghiệm của người dùng kéo dài suốt toàn bộ phiên làm việc. Một trang web có thể phản hồi nhanh ở click đầu tiên (FID tốt), nhưng các click tiếp theo mở menu, cuộn trang hay gửi form lại cực kỳ lag.
2. **Điểm số đẹp một cách giả tạo (Lừa dối)**: Số liệu thực tế của Google cho thấy hơn 90% trang web trên thế giới đạt điểm FID ở mức 'Good' (dưới 100ms). Tuy nhiên, người dùng vẫn liên tục phàn nàn về tình trạng đơ, giật. Điều này là do FID không tính thời gian chạy của event handler (Processing Time) và thời gian vẽ khung hình tiếp theo (Presentation Delay).
Vì các lý do trên, Google đã chính thức loại bỏ FID và thay thế hoàn toàn bằng chỉ số **INP (Interaction to Next Paint)** làm Core Web Vital từ ngày 12 tháng 3 năm 2024.
KHÔNGĐừng sử dụng FID làm chỉ số đo lường hiệu năng responsiveness cho các dự án mới. Hãy chuyển hướng hoàn toàn sang đo lường và tối ưu hóa INP.