Resource timing là một phần quan trọng trong Performance API của trình duyệt, cung cấp thông tin chi tiết về thời gian tải của từng tài nguyên cụ thể trên trang web như hình ảnh, tập lệnh JavaScript, biểu định kiểu CSS, phông chữ, tệp XMLHttpRequest và các tài nguyên khác. Hiểu rõ resource timing giúp các nhà phát triển web xác định chính xác nguyên nhân gây chậm trang, từ đó đưa ra giải pháp tối ưu hiệu suất hiệu quả. Bài viết này sẽ giải thích toàn diện về resource timing là gì, cách hoạt động, các thuộc tính quan trọng, và cách áp dụng nó để cải thiện trải nghiệm người dùng.
Resource Timing API Là Gì? Giải Thích Chi Tiết

Resource Timing API là một giao diện lập trình ứng dụng (API) được xây dựng trong các trình duyệt hiện đại, cho phép lấy dữ liệu hiệu suất chi tiết cho mỗi yêu cầu tài nguyên riêng lẻ. Khác với Navigation Timing API chỉ đo lường thời gian tải của toàn bộ trang chính, Resource Timing API tập trung vào từng tài nguyên con. Dữ liệu này bao gồm các mốc thời gian như thời điểm bắt đầu yêu cầu, thời gian chuyển hướng, tra cứu DNS, kết nối TCP, thương lượng TLS (nếu có), thời gian yêu cầu và phản hồi.
API này truy xuất thông qua PerformanceObserver hoặc mảng performance.getEntriesByType(‘resource’). Mỗi mục nhập (entry) trong kết quả trả về là một đối tượng PerformanceResourceTiming, chứa hàng loạt thuộc tính timestamp đo bằng mili giây, giúp phân tích từng giai đoạn của quá trình tải tài nguyên.
Các Thuộc Tính Chính Trong Resource Timing
Mỗi đối tượng PerformanceResourceTiming có các thuộc tính thời gian chính sau đây, được sắp xếp theo thứ tự xảy ra trong quá trình tải tài nguyên:
| Tên thuộc tính | Mô tả |
|---|---|
| startTime | Thời điểm bắt đầu tải tài nguyên, thường là thời điểm khởi tạo yêu cầu. |
| redirectStart | Thời điểm bắt đầu chuyển hướng (nếu có). |
| redirectEnd | Thời điểm kết thúc chuyển hướng. |
| domainLookupStart | Thời điểm bắt đầu tra cứu DNS. |
| domainLookupEnd | Thời điểm kết thúc tra cứu DNS. |
| connectStart | Thời điểm bắt đầu thiết lập kết nối TCP. |
| secureConnectionStart | Thời điểm bắt đầu quá trình bắt tay TLS/SSL (nếu kết nối HTTPS). |
| connectEnd | Thời điểm kết thúc thiết lập kết nối. |
| requestStart | Thời điểm bắt đầu gửi yêu cầu HTTP. |
| responseStart | Thời điểm nhận byte đầu tiên của phản hồi. |
| responseEnd | Thời điểm nhận xong toàn bộ phản hồi (tải hoàn tất). |
Ngoài ra còn có thuộc tính duration (tổng thời gian tải), initiatorType (loại tài nguyên: script, link, img, css, xmlhttprequest,…), name (URL đầy đủ của tài nguyên), transferSize (kích thước dữ liệu truyền), encodedBodySize và decodedBodySize.
Lợi Ích Khi Sử Dụng Resource Timing Trong Tối Ưu Hiệu Suất Website

Resource timing mang lại nhiều lợi ích thiết thực cho nhà phát triển và quản trị web:
- Phân tích chi tiết từng tài nguyên: Không chỉ biết trang chậm, bạn còn biết chính xác tệp ảnh hay script nào đang gây ra độ trễ.
- Phát hiện vấn đề mạng: Thời gian tra cứu DNS cao, kết nối TCP chậm hoặc TLS overhead bất thường đều có thể được phát hiện qua các thuộc tính resource timing.
- Tối ưu bộ nhớ đệm (cache): Kiểm tra transferSize (kích thước truyền) so với encodedBodySize giúp biết tài nguyên có được cache hiệu quả hay không.
- Đánh giá tác động của bên thứ ba: Các widget, quảng cáo, công cụ phân tích từ bên ngoài có thể ảnh hưởng đến hiệu suất – resource timing đo được chính xác từng tài nguyên đó.
- Cơ sở cho các công cụ RUM (Real User Monitoring): Dữ liệu resource timing thường được thu thập và gửi về máy chủ để theo dõi hiệu suất thực tế của người dùng thật.
Nghiên cứu cho thấy, các trang web sử dụng resource timing để chẩn đoán và tối ưu đã cải thiện thời gian tải trung bình lên đến 30%, giúp giảm tỷ lệ thoát và tăng tỷ lệ chuyển đổi.
So Sánh Resource Timing Với Navigation Timing

Nhiều người hay nhầm lẫn giữa Resource Timing API và Navigation Timing API. Bảng ..)
Trong thực tế, cả hai API thường được dùng bổ sung cho nhau. Resource timing cho bạn góc nhìn siêu vi mô, còn navigation timing cho cái nhìn vĩ mô về toàn bộ sự kiện tải trang.
Cách Truy Cập Và Sử Dụng Resource Timing API

Để sử dụng resource timing,
Network tab trong DevTools cũng hiển thị thời gian tải tài nguyên, nhưng resource timing API cung cấp dữ liệu có thể truy xuất bằng mã và thu thập tự động, phục vụ cho monitoring và phân tích số lượng lớn. DevTools chỉ cho thấy thông tin tĩnh, trong khi API cho phép xây dựng dashboard thời gian thực.
Làm thế nào để xem resource timing trên trình duyệt?
Có, resource timing hoạt động đầy đủ với HTTPS. Các thuộc tính như secureConnectionStart sẽ được điền giá trị nếu kết nối sử dụng TLS. Tuy nhiên, đối với các tài nguyên từ nguồn gốc khác (cross-origin), để có được thông tin chi tiết, bạn cần thêm header Timing-Allow-Origin trong phản hồi từ server.
Tại sao một số thuộc tính resource timing có giá trị 0?
Có thể vì tài nguyên được tải từ bộ nhớ đệm (cache) nên một số bước như DNS lookup, kết nối không xảy ra. Hoặc tài nguyên cross-origin không có header Timing-Allow-Origin, trình duyệt sẽ làm tròn các thuộc tính nhạy cảm (như redirectStart, domainLookupStart) về 0 vì lý do bảo mật.
Có thể sử dụng resource timing để đo thời gian tải font chữ không?
Được. Font chữ tải qua CSS (ví dụ @font-face) cũng được ghi nhận là tài nguyên với initiatorType là ‘css’ hoặc ‘link’. Bạn có thể lọc các entry có name kết thúc bằng.woff,.woff2,.ttf,… để theo dõi riêng font.
Kết Luận

Resource timing là công cụ mạnh mẽ không thể thiếu đối với bất kỳ ai muốn tối ưu hiệu suất web ở cấp độ tài nguyên. Với các thuộc tính chi tiết từ tra cứu DNS đến tải hoàn tất, nhà phát triển có thể xác định chính xác nút thắt cổ chai, từ đó đưa ra giải pháp phù hợp như chọn CDN tốt hơn, tối ưu kích thước tệp, cải thiện bộ nhớ đệm, hoặc sắp xếp thứ tự tải tài nguyên hợp lý.
Việc kết hợp resource timing với navigation timing và các API hiệu suất khác như Paint Timing (First Contentful Paint) giúp bạn có bức tranh toàn diện về trải nghiệm người dùng. Hãy bắt đầu tích hợp resource timing vào quy trình phát triển và theo dõi hiệu suất thực tế để trang web của bạn luôn nhanh và ổn định.
- Khắc Phục Ngay Lỗi Elementor Popup Không Hiển Thị: Nguyên Nhân Và Giải Pháp Toàn Diện
- Backlink Intersect Là Gì? Chiến Lược Tận Dụng Backlink Đối Thủ Để Tăng Thứ Hạng SEO
- Taxonomy Page Là Gì? Hướng Dẫn Chi Tiết Cách Tối Ưu Trang Phân Loại Cho SEO
- WordPress Email Responsive Lỗi: Nguyên Nhân Và Cách Khắc Phục Toàn Diện
- Hướng dẫn chi tiết sửa lỗi elementor undefined variable từ A đến Z















