Technical SEO

Resource Hints

Các chỉ thị (preload, prefetch, preconnect, dns-prefetch) giúp trình duyệt tải tài nguyên sớm hơn, cải thiện hiệu suất rendering.

3 lượt xem Cập nhật: 30/05/2026

Resource Hints là gì?

Resource Hints (Gợi ý tài nguyên) là các thẻ HTML hoặc tiêu đề HTTP giúp trình duyệt tải trước một số tài nguyên cần thiết — như font, script, stylesheet, hình ảnh hoặc kết nối tới miền khác — ngay từ giai đoạn đầu của quá trình render trang. Đây không phải là lệnh bắt buộc, mà là gợi ý mang tính ưu tiên cho trình duyệt dựa trên khả năng và trạng thái hiện tại (ví dụ: băng thông còn dư, CPU chưa bận).

Các loại Resource Hint phổ biến gồm:

  • preload: Báo trước để tải ngay lập tức (với độ ưu tiên cao), dùng cho tài nguyên cần trong lần render đầu tiên.
  • prefetch: Tải trước tài nguyên có thể dùng ở trang tiếp theo (ưu tiên thấp, thường chạy khi trình duyệt rảnh).
  • preconnect: Thiết lập kết nối mạng sớm tới miền ngoài (DNS + TCP + TLS), giảm độ trễ khi gọi tài nguyên sau này.
  • dns-prefetch: Chỉ thực hiện tra cứu DNS sớm — nhẹ hơn preconnect, phù hợp khi chưa chắc sẽ dùng toàn bộ kết nối.

Tại sao quan trọng trong SEO?

Google xếp hạng trang dựa một phần vào trải nghiệm người dùng — đặc biệt là tốc độ tải và thời gian tương tác đầu tiên (First Input Delay – FID, Largest Contentful Paint – LCP). Resource Hints giúp cải thiện trực tiếp các chỉ số Core Web Vitals bằng cách:

  • Giảm thời gian chờ tải font hoặc script chặn render.
  • Loại bỏ “độ trễ DNS” khi gọi API hoặc CDN bên ngoài.
  • Hỗ trợ tải song song nhiều tài nguyên thay vì đợi tuần tự.

Một trang tải nhanh hơn 1 giây có thể tăng tỷ lệ giữ chân lên đến 32% (theo dữ liệu Google năm 2023). Resource Hints không phải yếu tố xếp hạng trực tiếp, nhưng là công cụ kỹ thuật then chốt để đạt được các chỉ số hiệu suất mà Google dùng làm tín hiệu đánh giá.

Cách hoạt động

Khi trình duyệt phân tích HTML, nó đọc các thẻ <link rel="..."> và xử lý theo quy tắc ưu tiên riêng:

  • preload được xử lý ngay lập tức, cùng lúc với việc phân tích HTML — không đợi CSS hay JS hoàn tất.
  • preconnectdns-prefetch kích hoạt ngay khi phát hiện, nhưng không tải dữ liệu — chỉ thiết lập kênh mạng.
  • prefetch chỉ chạy sau khi trang hiện tại đã ổn định (onload xong), và chỉ nếu trình duyệt còn băng thông rảnh.

Quan trọng: Resource Hints không thay thế lazy loading hay code splitting. Chúng bổ sung — không thay thế — các chiến lược tối ưu khác.

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

Dưới đây là cách triển khai từng loại, đúng chuẩn W3C và hỗ trợ trên Chrome, Edge, Firefox, Safari (từ phiên bản 15.4 trở lên):

  1. Thêm vào <head> của trang HTML — không đặt trong <body> hoặc sau </head>.
  2. Chỉ dùng preload cho tài nguyên thiết yếu trong lần render đầu tiên (ví dụ: font quan trọng, critical CSS, script khởi tạo).
  3. Không preload quá 3–4 tài nguyên — tránh chiếm băng thông và làm chậm tải những thứ khác.
  4. prefetch chỉ nên dùng cho trang tiếp theo có xác suất cao (ví dụ: trang sản phẩm → trang giỏ hàng, hoặc bài viết → trang tác giả).
  5. preconnect chỉ áp dụng cho miền bạn thực sự gọi tài nguyên (ví dụ: cdn.example.com, fonts.googleapis.com), không dùng cho miền không liên quan.
  6. dns-prefetch dùng khi chưa rõ có cần kết nối đầy đủ hay không — ví dụ: miền quảng cáo hoặc analytics, nơi chỉ cần tra DNS trước.

Ví dụ khai báo hợp lệ:

<link rel="preload" href="/css/critical.css" as="style">
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">
<link rel="dns-prefetch" href="https://stats.example.com">
<link rel="prefetch" href="/cart.html" as="document">

Lỗi thường gặp

Dưới đây là những sai lầm phổ biến và cách sửa:

Lỗi Hệ quả Cách khắc phục
Dùng preload cho ảnh không hiển thị ngay (lazy image) Tăng băng thông thừa, làm chậm tải tài nguyên quan trọng hơn Thay bằng loading="lazy" hoặc không preload
Thiếu thuộc tính as khi preload Trình duyệt không biết loại tài nguyên → xử lý sai ưu tiên, có thể gây lỗi render Luôn thêm as (giá trị hợp lệ: script, style, font, image, document…)
Dùng preconnect cho quá nhiều miền (≥6) Gây cạnh tranh kết nối, làm chậm tải chính Giới hạn tối đa 3–4 miền; kiểm tra Network tab để xác minh miền nào thực sự được gọi
preload font mà thiếu crossorigin Font bị chặn do CORS, không hiển thị đúng trên mọi trình duyệt Thêm crossorigin khi font nằm trên miền khác (ngay cả khi cùng origin nhưng dùng subdomain)

Ví dụ thực tế

Một trang tin tức Việt Nam có cấu trúc sau:

  • Font Inter từ fonts.googleapis.com
  • Hình thumbnail từ cdn.baokhoa.vn
  • Script thống kê từ analytics.baokhoa.vn
  • Trang tiếp theo thường là /category/the-thao

HTML <head> tối ưu:

<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap" as="style">
<link rel="preload" href="https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTe6ZSrSmJ19_kVz8jYqQbUHrOQ.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preconnect" href="https://cdn.baokhoa.vn">
<link rel="dns-prefetch" href="https://analytics.baokhoa.vn">
<link rel="prefetch" href="/category/the-thao" as="document">

Kết quả đo bằng Lighthouse: LCP giảm từ 3.2s → 2.1s; TTFB không đổi, nhưng thời gian render nhanh hơn nhờ font và CDN sẵn sàng.

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

Resource Hints có hỗ trợ trên mọi trình duyệt?

preload, preconnect, dns-prefetch được hỗ trợ đầy đủ trên Chrome, Edge, Firefox và Safari từ phiên bản 15.4 (2022). prefetch có hỗ trợ rộng nhưng một số trình duyệt (như Safari) vẫn coi là experimental — nên kiểm tra qua caniuse.com. Với website nhắm đến người dùng Việt Nam (Chrome chiếm >75%), việc dùng là an toàn.

Có nên dùng Resource Hints cho tất cả tài nguyên trên trang?

Không. Dùng quá mức gây phản tác dụng: chiếm băng thông, làm chậm tải tài nguyên quan trọng hơn. Chỉ áp dụng cho tối đa 3–4 tài nguyên thiết yếu nhất trong lần render đầu tiên. Số lượng cụ thể tùy trường hợp — cần đo bằng WebPageTest hoặc Lighthouse trước/sau khi triển khai.

Resource Hints có thay thế HTTP/2 Server Push không?

Không. HTTP/2 Server Push đã bị loại bỏ khỏi Chrome từ phiên bản 96 (2021) và không còn được khuyến khích. Resource Hints là giải pháp thay thế hiện đại, an toàn hơn vì do client kiểm soát — không gây “push quá tải” như Server Push từng làm. Cả hai không tương thích và không nên dùng song song.