Nếu bạn đang tìm hiểu INP là gì và vì sao chỉ số này ngày càng được Google chú trọng trong Core Web Vitals thì đây là nội dung bạn không nên bỏ qua. INP hay Interaction-to-Next-Paint phản ánh tốc độ phản hồi của website sau khi người dùng thực hiện một thao tác như click, chạm hoặc nhập dữ liệu. Một website có INP kém thường khiến người dùng cảm thấy chậm, giật hoặc thiếu mượt mà khi sử dụng. Vì vậy việc đo lường và tối ưu INP đúng cách sẽ giúp cải thiện trải nghiệm người dùng lẫn hiệu quả SEO tổng thể.
Interaction to Next Paint (INP) là gì?
Tìm hiểu thêm: 10 cách tối ưu tốc độ tải trang cho website
3 thành phần cốt lõi cấu thành INP bao gồm?
Chỉ số INP được hình thành từ nhiều giai đoạn xử lý khác nhau trong quá trình người dùng tương tác với Website. Google sử dụng các thành phần này để đánh giá mức độ phản hồi thực tế của trang khi người dùng nhấp chuột, chạm màn hình hoặc nhập dữ liệu.
|
1
Input Delay
Input Delay là khoảng thời gian từ lúc người dùng thực hiện thao tác cho đến khi trình duyệt bắt đầu xử lý sự kiện đó. Ví dụ: Người dùng nhấn vào nút “Mua ngay” nhưng trang web phải mất vài giây mới bắt đầu xử lý thao tác vì trình duyệt đang tải nhiều đoạn mã nền. |
2
Processing Time
Processing Time là thời gian trình duyệt thực thi các đoạn mã và xử lý dữ liệu liên quan đến thao tác của người dùng. Ví dụ: Người dùng mở bộ lọc sản phẩm trên Website thương mại điện tử nhưng hệ thống cần nhiều thời gian để xử lý danh sách sản phẩm trước khi hiển thị kết quả. |
3
Presentation Delay
Presentation Delay là thời gian cần thiết để trình duyệt cập nhật giao diện và hiển thị phản hồi trực quan cho người dùng sau khi xử lý xong dữ liệu. Ví dụ: Người dùng nhấn mở menu trên điện thoại nhưng phải chờ thêm vài giây menu mới thực sự hiển thị trên màn hình. |
Thang điểm INP được đánh giá như thế nào?
Google phân loại chỉ số INP thành nhiều mức khác nhau để giúp quản trị Website dễ dàng đánh giá chất lượng trải nghiệm người dùng. Mỗi mức điểm sẽ phản ánh khả năng phản hồi của Website khi người dùng tương tác thực tế trên trang.
| Mức đánh giá | Ngưỡng INP | Mô tả trải nghiệm |
|---|---|---|
| Tốt | Dưới 200ms | Website phản hồi rất nhanh, mang lại trải nghiệm mượt mà. Các thao tác như mở menu, bấm nút hoặc nhập liệu diễn ra gần như tức thì. |
| Cần cải thiện | 200ms – 500ms | Website vẫn dùng được bình thường nhưng người dùng đôi khi cảm nhận được độ trễ nhẹ. Google khuyến nghị tiếp tục tối ưu để cải thiện trải nghiệm. |
| Kém | Trên 500ms | Website phản hồi chậm, người dùng cảm thấy lag, giật hoặc chờ quá lâu. Có thể làm tăng tỷ lệ thoát trang và ảnh hưởng tiêu cực đến SEO tổng thể. |
Làm thế nào để đo lường INP?
Để cải thiện chỉ số INP hiệu quả, bạn cần bắt đầu từ bước đo lường chính xác trải nghiệm tương tác của người dùng trên website. Hiện nay, cộng đồng SEO và Developer thường sử dụng hai phương pháp phổ biến để đo INP gồm dữ liệu thực tế từ người dùng thật và dữ liệu mô phỏng trong môi trường kiểm thử. Mỗi phương pháp sẽ phù hợp với từng mục đích khác nhau như theo dõi trải nghiệm thực tế, kiểm tra lỗi hiệu suất hoặc phân tích nguyên nhân gây chậm tương tác.
Đo lường bằng dữ liệu thực tế
PageSpeed Insights là công cụ phổ biến nhất để kiểm tra INP bằng dữ liệu người dùng thật từ Chrome User Experience Report. Công cụ này giúp bạn biết chính xác trải nghiệm tương tác mà người dùng đang gặp phải trên thiết bị di động và desktop. Ngoài việc hiển thị điểm INP, PageSpeed Insights còn cho biết URL nào đang gặp vấn đề và mức độ ảnh hưởng của chúng tới trải nghiệm tổng thể.
Bước 1: Truy cập công cụ PageSpeed Insights
Bạn mở trình duyệt và truy cập vào công cụ đcủa Google. Sau đó bạn dán URL website hoặc trang cần kiểm tra vào ô tìm kiếm rồi nhấn nút phân tích để hệ thống bắt đầu thu thập dữ liệu hiệu suất.

Bước 2: Kiểm tra mục Core Web Vitals Assessment
Sau khi công cụ hoàn tất phân tích, bạn kéo xuống khu vực Core Web Vitals Assessment để xem trạng thái đạt hay chưa đạt. Tại đây Google sẽ hiển thị chỉ số INP cùng màu sắc đánh giá tương ứng như Tốt, Cần cải thiện hoặc Kém.

Bước 3: Xem chi tiết chỉ số INP
Bạn nhấn vào mục INP để xem thêm dữ liệu chi tiết liên quan tới thời gian phản hồi tương tác. Hệ thống sẽ cung cấp thông tin về độ trễ tương tác lớn nhất và nhóm URL đang có vấn đề để bạn xác định khu vực cần tối ưu.
Bước 4: Phân tích thiết bị Desktop và Mobile riêng biệt
Bạn nên chuyển đổi giữa tab Mobile và Desktop để kiểm tra sự khác biệt về hiệu suất. Trong nhiều trường hợp, website có INP tốt trên desktop nhưng lại chậm trên thiết bị di động do CPU yếu và tài nguyên tải quá nặng.
Đo lường trong phòng thí nghiệm
Khác với dữ liệu thực tế, Lighthouse và Chrome DevTools giúp bạn mô phỏng quá trình tải trang trong môi trường kiểm thử để tìm nguyên nhân gây INP cao. Đây là nhóm công cụ rất phù hợp khi bạn cần debug JavaScript, kiểm tra Main-thread hoặc phân tích event handlers gây chậm tương tác trên website.
Bước 1: Mở Chrome DevTools trên website cần kiểm tra
Bạn truy cập website cần phân tích bằng trình duyệt Google Chrome. Sau đó bạn nhấn chuột phải chọn “Inspect” hoặc sử dụng tổ hợp phím F12 để mở Chrome DevTools.

Bước 2: Chạy Lighthouse Audit
Bạn chọn tab “Lighthouse” trong DevTools rồi đánh dấu các hạng mục cần kiểm tra như Performance hoặc Mobile. Sau đó bạn nhấn “Analyze page load” để Lighthouse tiến hành mô phỏng và đánh giá hiệu suất website.

Bước 3: Phân tích các tác vụ chặn Main-thread
Sau khi có báo cáo, bạn kéo xuống mục “Diagnostics” để xem các cảnh báo liên quan tới JavaScript nặng, thời gian thực thi dài hoặc Main-thread bị block. Đây thường là nguyên nhân trực tiếp khiến INP tăng cao.
Bước 4: Kiểm tra tương tác bằng tab Performance
Bạn chuyển sang tab “Performance” rồi nhấn nút ghi để bắt đầu mô phỏng thao tác trên website như click menu, mở popup hoặc submit form. Sau khi dừng ghi, DevTools sẽ hiển thị timeline chi tiết giúp bạn xác định đoạn code hoặc event nào đang xử lý quá lâu.
Cách tối ưu chỉ số INP toàn diện cho Website như thế nào?
INP không chỉ bị ảnh hưởng bởi một yếu tố riêng lẻ mà thường liên quan tới toàn bộ quá trình xử lý tương tác trên website. Vì vậy khi tối ưu INP, bạn nên chia thành từng giai đoạn cụ thể gồm giảm thời gian chờ phản hồi, rút ngắn thời gian xử lý tác vụ và cải thiện tốc độ hiển thị giao diện sau tương tác. Cách tiếp cận này giúp bạn xác định đúng vấn đề thay vì tối ưu dàn trải nhưng không cải thiện hiệu suất thực tế.
Giai đoạn 1: Tối ưu Input Delay (Giảm tải Main-thread, tối ưu JS)
Input Delay thường tăng cao khi Main-thread phải xử lý quá nhiều JavaScript cùng lúc. Khi người dùng nhấn nút hoặc thực hiện thao tác nào đó, trình duyệt không thể phản hồi ngay vì đang bận xử lý script nền. Đây là nguyên nhân rất phổ biến trên các website dùng nhiều thư viện JS, animation hoặc plugin nặng. Bạn có thể tối ưu theo các bước sau:
Bước 1: Kiểm tra JavaScript gây block Main-thread
Bạn mở báo cáo Lighthouse trong DevTools để tìm các task có thời gian xử lý dài. Những đoạn JavaScript thực thi quá lâu thường sẽ xuất hiện trong mục “Long Tasks” hoặc “Main-thread work”.

Bước 2: Loại bỏ JavaScript không cần thiết
Bạn rà soát lại plugin, thư viện hoặc đoạn script bên thứ ba không thực sự cần dùng. Những thành phần như chat widget, tracking script hoặc animation nặng thường làm tăng thời gian phản hồi tương tác.

Bước 3: Áp dụng Lazy Load và Code Splitting
Bạn nên chia nhỏ JavaScript thành nhiều phần thay vì tải toàn bộ ngay khi mở trang. Việc sử dụng Lazy Load hoặc Code Splitting sẽ giúp trình duyệt ưu tiên xử lý nội dung quan trọng trước, từ đó giảm Input Delay hiệu quả hơn.
Bước 4: Sử dụng thuộc tính async hoặc defer
Bạn thêm thuộc tính async hoặc defer cho các file JavaScript không cần thực thi ngay lập tức. Điều này giúp trình duyệt không bị chặn render giao diện trong quá trình tải script.
Giai đoạn 2: Tối ưu Processing Time (Tối ưu event handlers)
Processing Time tăng cao khi trình duyệt cần quá nhiều thời gian để xử lý logic sau khi người dùng tương tác. Các event handlers viết thiếu tối ưu hoặc chứa nhiều tác vụ phức tạp sẽ khiến thao tác click, nhập liệu hoặc cuộn trang bị lag rõ rệt.
Bước 1: Kiểm tra các event handlers xử lý lâu
Bạn sử dụng tab Performance trong DevTools để xem sự kiện nào đang tiêu tốn nhiều thời gian xử lý nhất. Những thao tác như click menu, filter sản phẩm hoặc submit form thường là khu vực dễ phát sinh độ trễ.

Bước 2: Tối ưu logic JavaScript bên trong sự kiện
Bạn nên rút gọn các đoạn code xử lý trong event handlers và hạn chế thực hiện nhiều tác vụ cùng lúc. Các thao tác tính toán phức tạp hoặc xử lý DOM liên tục sẽ khiến Processing Time tăng mạnh.
Bước 3: Chuyển tác vụ nặng sang Web Worker
Bạn có thể sử dụng Web Worker để xử lý các tác vụ tính toán lớn ở luồng riêng thay vì để Main-thread xử lý toàn bộ. Cách này giúp website vẫn phản hồi mượt khi người dùng tương tác.
Bước 4: Hạn chế re-render không cần thiết
Nếu website sử dụng framework như React hoặc Vue, bạn nên kiểm tra các component re-render liên tục. Việc cập nhật DOM quá nhiều lần sẽ làm tăng thời gian xử lý sau tương tác.
Giai đoạn 3: Tối ưu Presentation Delay (Giảm độ phức tạp của DOM, tối ưu CSS rendering)
Presentation Delay xảy ra khi trình duyệt đã xử lý xong interaction nhưng giao diện vẫn chưa kịp hiển thị kết quả cho người dùng. Nguyên nhân phổ biến thường đến từ DOM quá lớn, CSS phức tạp hoặc animation nặng khiến quá trình render bị chậm.
Bước 1: Giảm số lượng phần tử DOM không cần thiết
Bạn kiểm tra cấu trúc HTML và loại bỏ các thẻ lồng nhau quá sâu hoặc thành phần dư thừa. DOM càng phức tạp thì trình duyệt càng mất nhiều thời gian để render giao diện.

Bước 2: Tối ưu CSS và animation
Bạn hạn chế sử dụng animation nặng hoặc các thuộc tính CSS gây repaint liên tục như box-shadow, filter hoặc backdrop-filter. Những hiệu ứng này thường khiến trình duyệt phải render lại nhiều lần sau tương tác.

Bước 3: Ưu tiên sử dụng transform và opacity
Khi tạo hiệu ứng chuyển động, bạn nên sử dụng transform và opacity thay vì thay đổi width, height hoặc top left. Đây là nhóm thuộc tính giúp trình duyệt xử lý animation mượt hơn và giảm tải render.
Bước 4: Kiểm tra tốc độ render bằng DevTools Rendering
Bạn mở DevTools rồi bật tính năng Rendering để theo dõi paint flashing và layout shifts khi tương tác. Công cụ này giúp bạn nhận biết khu vực nào đang render lại quá nhiều sau mỗi thao tác của người dùng.



