Trong lĩnh vực phát triển web hiện đại, tốc độ tải trang không còn là một yếu tố kỹ thuật đơn thuần mà trở thành yếu tố quyết định trải nghiệm người dùng và hiệu quả SEO. Người dùng thường rời bỏ trang nếu nội dung không xuất hiện ngay trong vài giây đầu, trong khi Google cũng đánh giá cao những website tải nhanh nhờ các chỉ số Core Web Vitals.
Một trong những kỹ thuật mạnh mẽ để cải thiện tốc độ tải trang là preload. Preload cho phép trình duyệt tải trước các tài nguyên quan trọng như CSS, JavaScript, font, hình ảnh hoặc video ngay từ đầu, giúp trang hiển thị nhanh hơn và mượt mà hơn. Tuy nhiên, nhiều lập trình viên vẫn chưa hiểu rõ preload là gì, cách triển khai chuẩn và khi nào nên sử dụng, dẫn đến việc áp dụng sai hoặc hiệu quả chưa tối ưu. Vậy nên, hãy cùng tìm hiểu chi tiết về rel preload và cách sử dụng thuộc tính này đúng cách trong bài viết sau đây!

- Preload là gì?
- Lợi ích của việc sử dụng preload đối với website
- Cách thức hoạt động của preload web
- Những loại tài nguyên có thể sử dụng preload
- Hướng dẫn triển khai rel preload đúng chuẩn cho website
- Cách kiểm tra thuộc tính rel preload có hoạt động hay không?
- Phân biệt preload với các kỹ thuật liên quan
- Những sai lầm thường gặp khi sử dụng preload
- Một số câu hỏi thường gặp về preload web
- 1. Preload có làm chậm website nếu sử dụng quá nhiều không?
- 2. Khi nào không nên dùng rel preload?
- 3. Tại sao đã thêm thẻ rel preload nhưng Google PageSpeed vẫn báo lỗi?
- 4. Preload web có hỗ trợ tất cả các trình duyệt không?
- 5. Tại sao khi preload font lại cần thuộc tính crossorigin?
- 6. Liệu có nên sử dụng preload toàn bộ file JavaScript không?
Preload là gì?
Preload là một kỹ thuật trong phát triển web cho phép bạn “báo trước” cho trình duyệt biết những tài nguyên quan trọng cần được tải sớm, ngay từ khi trang bắt đầu load. Thông thường, trình duyệt sẽ tải tài nguyên theo thứ tự nó phân tích được từ HTML. Tuy nhiên với preload, bạn có thể ưu tiên các file quan trọng như:
- Font chữ.
- CSS quan trọng.
- JavaScript cần thiết.
- Hình ảnh hiển thị đầu trang.
Preload được khai báo thông qua thẻ < link > với thuộc tính rel="preload" trong phần < head > của trang, ví dụ:
< link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin >
< link rel="preload" href="/css/critical.css" as="style">
< link rel="preload" href="/images/hero.webp" as="image">
Nhờ cơ chế preload, trình duyệt không cần phải “đợi” đến khi đọc xong toàn bộ HTML mới bắt đầu tải các tài nguyên. Thay vào đó, các tài nguyên quan trọng có thể được tải ngay lập tức, giúp rút ngắn thời gian hiển thị nội dung và nâng cao trải nghiệm người dùng.

Lợi ích của việc sử dụng preload đối với website
Preload không chỉ giúp trang tải nhanh hơn mà còn tác động trực tiếp đến các chỉ số hiệu suất quan trọng - những yếu tố được cả Google và người dùng đặc biệt quan tâm. Khi được triển khai đúng cách, preload mang lại những lợi ích cốt lõi sau:
- Cải thiện chỉ số Core Web Vitals: Trong bộ chỉ số Core Web Vitals, LCP (Largest Contentful Paint) là yếu tố chịu ảnh hưởng rõ rệt nhất từ preload. Đây là chỉ số đo thời gian hiển thị phần tử lớn nhất trong vùng nhìn thấy (thường là ảnh hero, banner hoặc tiêu đề chính). Bằng cách ưu tiên tải trước các tài nguyên này, preload giúp nội dung quan trọng xuất hiện nhanh hơn. Trong nhiều trường hợp, thời gian LCP có thể được cải thiện từ 30% đến 50%, tùy thuộc vào cách tối ưu và cấu trúc của website.
- Giảm thời gian chặn render: Các tài nguyên như CSS hoặc font thường khiến trình duyệt phải tạm dừng việc hiển thị cho đến khi tải xong. Khi sử dụng preload, các tài nguyên này được tải sớm hơn, giúp giảm thiểu tình trạng render-blocking và cho phép nội dung được hiển thị nhanh, mượt hơn ngay từ những giây đầu tiên.
- Nâng cao trải nghiệm người dùng: Preload cải thiện trải nghiệm người dùng theo cách cụ thể và có thể đo lường được. Các nghiên cứu của Google và Amazon đều chỉ ra rằng cứ mỗi 100ms trễ tải trang, tỷ lệ chuyển đổi giảm trung bình 1%. Preload giúp loại bỏ những độ trễ nhỏ nhưng quan trọng này bằng cách đảm bảo các tài nguyên thiết yếu luôn sẵn sàng trước khi người dùng cần đến. Nhờ đó, website không chỉ tải nhanh hơn mà còn mang lại cảm giác ổn định, mượt mà và dễ tương tác hơn.
- Hỗ trợ SEO tốt hơn: Kể từ khi Google chính thức đưa Core Web Vitals vào thuật toán xếp hạng (Page Experience Update), tốc độ tải trang đã trở thành một yếu tố ảnh hưởng trực tiếp đến thứ hạng tìm kiếm. Preload góp phần cải thiện SEO theo hai hướng: gián tiếp thông qua việc tối ưu các chỉ số hiệu suất như LCP và trực tiếp khi giúp Googlebot tải và render trang nhanh hơn, từ đó quá trình index diễn ra chính xác và đầy đủ hơn. Dù không thay thế các kỹ thuật SEO khác, preload vẫn là một nền tảng kỹ thuật quan trọng trong chiến lược tối ưu website toàn diện.

Cách thức hoạt động của preload web
Để hiểu preload hoạt động như thế nào, bạn cần hình dung được luồng xử lý mặc định của trình duyệt khi tải một trang web. Thông thường, trình duyệt đọc HTML từ trên xuống dưới theo từng dòng, gặp tài nguyên nào thì mới bắt đầu tải tài nguyên đó - một quy trình tuần tự khiến nhiều tài nguyên quan trọng phải "xếp hàng chờ" dù thực tế rất cần thiết.
Preload được thiết kế để phá vỡ vòng lặp tuần tự đó bằng cách đưa thông tin tải tài nguyên lên ngay đầu tài liệu HTML, cho phép trình duyệt khởi động tải song song trước khi phần thân trang được phân tích xong.
Về mặt kỹ thuật, cơ chế hoạt động của preload web diễn ra theo trình tự sau:
- Trình duyệt tiến hành đọc thẻ < link rel="preload" > trong phần < head > và ngay lập tức đẩy yêu cầu tải tài nguyên vào hàng đợi ưu tiên cao.
- Tài nguyên được tải về và lưu vào bộ nhớ đệm (cache) của trình duyệt nhưng chưa được áp dụng vào trang.
- Khi trình duyệt phân tích đến vị trí thực sự sử dụng tài nguyên đó (ví dụ: thẻ < img > hoặc @font-face trong CSS), tài nguyên đã có sẵn trong cache và được áp dụng ngay lập tức, không phát sinh thêm thời gian tải.
Điểm phân biệt quan trọng là preload không thay đổi thứ tự thực thi, nó chỉ đảm bảo tài nguyên có mặt đúng lúc. Thuộc tính as trong khai báo preload giúp trình duyệt xác định đúng mức độ ưu tiên:
- As="font" và as="style" được ưu tiên cao nhất.
- As="image" ở mức trung bình.
- As="script" phụ thuộc vào vị trí trong trang.
Nếu bỏ qua thuộc tính as, trình duyệt sẽ không thể xác định đúng loại tài nguyên và thường xử lý với mức ưu tiên thấp nhất. Điều này gần như làm mất đi toàn bộ lợi ích mà preload mang lại, khiến tối ưu trở nên kém hiệu quả.

Những loại tài nguyên có thể sử dụng preload
Preload không phải là kỹ thuật áp dụng đại trà cho mọi tài nguyên trên trang - hiệu quả của nó đến từ sự chọn lọc có chủ đích. Trình duyệt hỗ trợ preload cho nhiều loại tài nguyên khác nhau, mỗi loại được khai báo thông qua thuộc tính as với giá trị tương ứng, giúp trình duyệt xác định đúng mức ưu tiên và chính sách bảo mật khi tải. Dưới đây là 5 nhóm tài nguyên phổ biến nhất mà preload được áp dụng hiệu quả trong thực tế.
1. CSS (as="style")
CSS là một trong những loại tài nguyên hưởng lợi rõ rệt nhất từ preload bởi đây là tài nguyên chặn render (render-blocking) theo mặc định. Trình duyệt sẽ không thể hiển thị bất kỳ nội dung nào cho đến khi toàn bộ stylesheet được tải xuống và phân tích hoàn tất. Điều này khiến CSS trở thành yếu tố có ảnh hưởng trực tiếp đến tốc độ hiển thị ban đầu của trang.
Kỹ thuật này đặc biệt hiệu quả khi áp dụng cho critical CSS - phần stylesheet chịu trách nhiệm định dạng nội dung hiển thị ở vùng “above-the-fold” (khu vực người dùng nhìn thấy ngay khi tải trang). Việc preload đúng các tài nguyên CSS quan trọng không chỉ cải thiện tốc độ hiển thị mà còn góp phần nâng cao trải nghiệm người dùng và tối ưu các chỉ số hiệu suất như LCP.
2. JavaScript (as="script")
JavaScript là tài nguyên quan trọng quyết định đến khả năng tương tác và logic xử lý của website nhưng đồng thời cũng có thể gây ảnh hưởng tiêu cực đến hiệu suất nếu không được tối ưu hợp lý. Trong nhiều trường hợp, JavaScript có thể làm gián đoạn quá trình phân tích HTML (parser-blocking), đặc biệt khi được tải và thực thi theo cách đồng bộ. Về cơ bản, để preload một file JavaScript, bạn khai báo trong phần head như sau:
< link rel="preload" href="main.js" as="script" >
Khai báo này giúp trình duyệt nhận biết rằng main.js là tài nguyên quan trọng và cần được tải sớm. Tuy nhiên, để file JavaScript hoạt động đúng cách, bạn vẫn cần giữ thẻ < script > ở vị trí phù hợp trong HTML:
< script src="main.js" defer>
Tuy nhiên không phải mọi file JavaScript đều cần được preload, chỉ những script quan trọng và cần thiết sớm mới xứng đáng được ưu tiên. Ba nhóm script phù hợp nhất để preload bao gồm:
- Script khởi tạo framework (React, Vue, Angular bundle chính), cần sẵn sàng ngay khi DOM được dựng xong.
- Script xử lý tương tác ngay lập tức như menu điều hướng, form đăng nhập, giỏ hàng.
- Script phân tích/tracking quan trọng nếu dữ liệu thu thập từ giây đầu tiên là bắt buộc.
Preload đặc biệt phù hợp với các JavaScript quan trọng như:
- Script khởi tạo giao diện (UI initialization).
- Thư viện cần thiết cho nội dung hiển thị ban đầu.
- Các module ảnh hưởng trực tiếp đến trải nghiệm người dùng.
Ngược lại, không nên preload các script không cần thiết ở giai đoạn đầu, vì có thể làm tăng tải mạng không cần thiết và ảnh hưởng đến hiệu suất tổng thể. Khi sử dụng đúng cách, preload cho JavaScript giúp cân bằng giữa tốc độ tải và khả năng tương tác, từ đó nâng cao hiệu quả vận hành của website.

3. Font (as="font")
Font là một trong những trường hợp mà preload mang lại tác động trực quan rõ ràng nhất đối với người dùng cuối. Theo cơ chế mặc định, trình duyệt chỉ bắt đầu tải font sau một chuỗi xử lý khá dài: tải HTML → tải CSS → phân tích CSS → gặp khai báo @font-face → sau đó mới gửi yêu cầu tải font. Toàn bộ quá trình này có thể mất từ 500ms đến vài giây, tùy thuộc vào tốc độ mạng và cấu trúc trang.
Trong khoảng thời gian chờ đó, người dùng thường gặp 2 hiện tượng phổ biến:
- FOIT (Flash of Invisible Text) - văn bản không hiển thị trong thời gian ngắn.
- FOUT (Flash of Unstyled Text) - văn bản hiển thị bằng font hệ thống rồi “nhảy” sang font chính sau khi tải xong.
Cả hai đều ảnh hưởng tiêu cực đến trải nghiệm người dùng và cảm nhận về chất lượng website.
Preload giúp giải quyết triệt để vấn đề này bằng cách cho phép trình duyệt tải font song song ngay từ đầu, thay vì chờ đến khi phân tích xong CSS. Nhờ đó, font đã sẵn sàng khi cần sử dụng, giúp nội dung hiển thị ổn định và nhất quán ngay từ lần render đầu tiên.
Để preload font đúng cách và đạt hiệu quả tối ưu, cần đặc biệt lưu ý hai thuộc tính quan trọng:
- Thứ nhất là type="font/woff2", giúp trình duyệt xác định đúng định dạng font và bỏ qua việc tải nếu không được hỗ trợ, từ đó tránh lãng phí tài nguyên.
- Thứ hai là crossorigin, đây là thuộc tính bắt buộc ngay cả khi font được lưu trữ trên cùng domain. Lý do là trình duyệt luôn tải font theo cơ chế CORS; nếu thiếu thuộc tính này, font có thể bị tải lại lần thứ hai khi được gọi trong @font-face, gây lãng phí băng thông và làm giảm hiệu suất.

4. Image (as="image")
Hình ảnh, đặc biệt là ảnh hero (ảnh lớn đầu trang), thường là yếu tố quyết định trực tiếp đến chỉ số LCP. Tuy nhiên theo cơ chế mặc định, trình duyệt chỉ bắt đầu tải ảnh khi gặp thẻ < img > trong quá trình phân tích HTML, hoặc khi CSS yêu cầu background-image. Điều này có thể khiến các hình ảnh quan trọng bị tải trễ hơn so với mức cần thiết.
Preload giúp giải quyết vấn đề này bằng cách cho phép trình duyệt nhận diện và tải trước các hình ảnh quan trọng ngay từ đầu. Khi được preload, ảnh hero có thể bắt đầu tải song song với HTML, thay vì phải chờ đến khi DOM được phân tích hoàn tất. Nhờ đó, thời gian hiển thị phần tử lớn nhất trên màn hình được rút ngắn đáng kể.
Cách khai báo preload cho hình ảnh:
< link rel="preload" href="hero.jpg" as="image" >
Tuy nhiên, cần sử dụng preload cho hình ảnh một cách có chọn lọc. Chỉ nên áp dụng với:
- Ảnh hero (above-the-fold).
- Ảnh quan trọng ảnh hưởng đến LCP.
- Hình ảnh hiển thị ngay khi tải trang.
Preload quá nhiều hình ảnh có thể gây nghẽn băng thông và làm giảm hiệu suất tổng thể. Do đó, chiến lược tối ưu là ưu tiên đúng tài nguyên, không phải preload toàn bộ.
5. Video (as="video")
Video là loại tài nguyên có dung lượng lớn và tiêu tốn nhiều băng thông, do đó việc preload cần được cân nhắc kỹ lưỡng. Trong một số trường hợp, preload video có thể cải thiện đáng kể trải nghiệm người dùng, đặc biệt khi video là nội dung chính hoặc xuất hiện ngay trong màn hình đầu tiên.
Theo mặc định, trình duyệt thường không tải toàn bộ video ngay lập tức mà chỉ tải metadata hoặc một phần nhỏ. Điều này giúp tiết kiệm tài nguyên, nhưng cũng có thể gây ra độ trễ khi người dùng bắt đầu phát video.
Khi sử dụng preload với as="video", bạn có thể yêu cầu trình duyệt tải sớm tài nguyên video:
< link rel="preload" href="intro.mp4" as="video" >
Tuy nhiên trong thực tế, preload video thường chỉ nên áp dụng trong các trường hợp:
- Video là nội dung chính (hero video).
- Video cần phát ngay khi trang tải (auto-play).
- Landing page tập trung vào trải nghiệm media.
Ngoài ra, cần kết hợp với thuộc tính preload trong thẻ < video > (auto, metadata, none) để kiểm soát mức độ tải phù hợp. Lưu ý quan trọng là không nên preload video dung lượng lớn trên các trang có nhiều tài nguyên khác, vì có thể gây tắc nghẽn mạng và làm chậm toàn bộ quá trình tải trang. Khi sử dụng đúng ngữ cảnh, preload video sẽ giúp cải thiện đáng kể độ mượt và tính liên tục trong trải nghiệm người dùng.

Hướng dẫn triển khai rel preload đúng chuẩn cho website
Để preload phát huy tối đa hiệu quả, việc triển khai cần tuân thủ đúng cú pháp và áp dụng có chiến lược. Dưới đây là hướng dẫn chi tiết giúp bạn sử dụng rel preload một cách chuẩn kỹ thuật và tối ưu hiệu suất.
Cấu trúc cơ bản của preload được khai báo trong thẻ < head > như sau:
< link rel="preload" href="URL_tài_nguyên" as="loại_tài_nguyên" >
Trong đó:
- Rel="preload": Khai báo sử dụng preload.
- Href: Đường dẫn đến tài nguyên cần tải trước.
- As: Xác định loại tài nguyên (bắt buộc).
Một số giá trị phổ biến của as:
- As="style" → CSS
- As="script" → JavaScript
- As="font" → Font
- As="image" → Hình ảnh
- As="video" → Video
Ví dụ để preload CSS quan trọng, bạn có thể viết:
< head >
< !-- Khai báo charset -->
< meta charset="UTF-8">
< !-- Preload CSS quan trọng -->
< link rel="preload" href="styles.css" as="style">
< link rel="stylesheet" href="styles.css">
< !-- Có thể thêm preload các tài nguyên khác ở đây -->
< /head>
Cụ thể:
- Thẻ < meta charset="UTF-8" > nên đặt ở dòng đầu trong < head > để trình duyệt xác định chuẩn ký tự ngay lập tức.
- Thẻ < link rel="preload" > được đặt ngay sau meta charset, giúp trình duyệt phát hiện tài nguyên CSS sớm nhất và tải song song với phân tích HTML.
- Thẻ < link rel="stylesheet" > vẫn cần để CSS thực sự được áp dụng cho trang.
Preload hoạt động hiệu quả hơn khi kết hợp với các kỹ thuật tối ưu khác.
- Với CSS, bạn dùng preload kết hợp với rel="stylesheet".
- Với JavaScript, kết hợp preload với defer hoặc async. Với font, kết hợp preload với font-display: swap trong CSS để đảm bảo chữ hiển thị ngay mà không nhấp nháy.

Cách kiểm tra thuộc tính rel preload có hoạt động hay không?
Để đảm bảo các tài nguyên quan trọng được tải sớm và trang web đạt hiệu suất tối ưu, bạn nên kiểm tra xem preload có hoạt động đúng hay không. Có ba công cụ phổ biến để thực hiện việc này: DevTools của Chrome, Lighthouse và PageSpeed Insights. Mỗi công cụ đều cung cấp thông tin chi tiết về thời điểm tải tài nguyên, mức độ ưu tiên, cũng như cảnh báo về những tài nguyên chưa được tối ưu.
1. Sử dụng DevTools
Trình duyệt Chrome cung cấp DevTools, đây là một công cụ mạnh mẽ giúp người dùng quan sát trực tiếp các tài nguyên được tải trên trang. Bạn có thể kiểm tra preload bằng các bước sau:
- Bạn mở DevTools bằng cách nhấn F12 hoặc chuột phải → Inspect, sau đó chuyển sang tab Network.
- Khi tải lại trang, bạn sẽ thấy tất cả các tài nguyên được tải, kèm theo thông tin chi tiết như kích thước, thời điểm tải và mức ưu tiên.
- Nếu preload hoạt động, các tài nguyên quan trọng sẽ xuất hiện ngay từ đầu và có High Priority, trước khi trình duyệt phân tích tới thẻ sử dụng chúng.

2. Kiểm tra trong Lighthouse
Lighthouse là công cụ tích hợp trong DevTools, giúp đánh giá toàn diện hiệu suất, trải nghiệm người dùng và SEO của trang. Bạn có thể kiểm tra xem preload có hoạt động đúng hay không bằng các bước sau:
- Bạn mở tab Lighthouse, chọn các tùy chọn như Performance, Best Practices, SEO, rồi nhấn Generate report.
- Báo cáo sẽ liệt kê các tài nguyên quan trọng, đồng thời đánh giá xem preload đã được áp dụng hiệu quả hay chưa.
- Nếu preload hoạt động đúng, Lighthouse sẽ ghi nhận rằng các tài nguyên trọng yếu được tải sớm và không xuất hiện cảnh báo render-blocking.
3. Dùng PageSpeed Insights
PageSpeed Insights là công cụ trực tuyến của Google, giúp phân tích tốc độ và khả năng tối ưu của trang web. Bạn có thể kiểm tra preload bằng các bước sau:
- Truy cập công cụ: Bạn nhấn mở PageSpeed Insights và nhập URL của trang web cần kiểm tra.
- Phân tích trang: Nhấn nút Analyze để PageSpeed Insights bắt đầu quét toàn bộ trang và đánh giá hiệu suất.
- Xem kết quả preload: Trong phần Opportunities và Diagnostics, công cụ sẽ hiển thị các tài nguyên đã được preload hoặc chưa được preload đúng cách. Nếu preload hoạt động hiệu quả, PageSpeed Insights sẽ không báo lỗi về tài nguyên quan trọng bị tải muộn.
- Khắc phục sự cố: Nếu vẫn xuất hiện cảnh báo, bạn cần kiểm tra lại các yếu tố như thuộc tính as, thuộc tính crossorigin với font hoặc đường dẫn đến tài nguyên để đảm bảo preload thực sự hiệu quả.

Phân biệt preload với các kỹ thuật liên quan
Preload là một kỹ thuật tối ưu hiệu suất mạnh mẽ, nhưng để tận dụng đúng cách, cần hiểu rõ sự khác biệt với các kỹ thuật liên quan như prefetch, preconnect hay lazy load. Nhầm lẫn giữa các kỹ thuật này không chỉ lãng phí băng thông mà còn có thể ảnh hưởng tiêu cực đến tốc độ trang.
1. Preload vs Prefetch
Điểm quan trọng cần nắm là preload và prefetch phục vụ hai mục đích khác nhau.
- Preload ưu tiên tải các tài nguyên cần thiết ngay lập tức cho trang hiện tại. Ví dụ: CSS hiển thị above-the-fold, font chính, ảnh hero hay JavaScript khởi tạo giao diện. Preload giúp trình duyệt tải tài nguyên này sớm, đảm bảo nội dung hiển thị nhanh và mượt.
- Prefetch dùng để tải các tài nguyên có thể cần trong tương lai, chẳng hạn như hình ảnh hoặc script của trang tiếp theo mà người dùng có thể truy cập. Prefetch giúp trải nghiệm mượt mà khi người dùng chuyển trang nhưng không ưu tiên tải ngay lập tức.
Nhầm lẫn giữa hai kỹ thuật này có thể dẫn đến lãng phí băng thông hoặc trì hoãn tải các tài nguyên quan trọng. Khi sử dụng preload, thuộc tính as đóng vai trò quan trọng, giúp trình duyệt xác định đúng loại tài nguyên (font, style, image, script…) để áp dụng chính sách bảo mật và mức độ ưu tiên tải chính xác. Bạn có thể preload các tài nguyên quan trọng cho trang hiện tại, đồng thời sử dụng prefetch cho tài nguyên trang tiếp theo để tối ưu trải nghiệm người dùng mà không ảnh hưởng đến tốc độ hiển thị ban đầu.
2. Preload vs Preconnect
Preconnect là kỹ thuật giúp trình duyệt thiết lập kết nối sớm đến server (DNS lookup, TCP handshake, TLS negotiation) trước khi cần tải tài nguyên. Điều này khác với preload vì preconnect không tải tài nguyên, chỉ chuẩn bị kết nối để rút ngắn thời gian tải sau này.
- Khi dùng preload: Trình duyệt tải tài nguyên ngay lập tức.
- Khi dùng preconnect: Trình duyệt chỉ chuẩn bị kết nối, tài nguyên vẫn được tải khi HTML hoặc CSS yêu cầu.
Với các tài nguyên từ domain bên ngoài (CDN, font, API), bạn có thể preconnect trước để giảm độ trễ, sau đó preload tài nguyên quan trọng từ server đó để hiển thị nhanh hơn.
3. Preload vs Lazy Load
Lazy load là kỹ thuật trì hoãn tải tài nguyên cho đến khi thực sự cần hiển thị, thường dùng cho hình ảnh hoặc video ngoài màn hình đầu tiên. Preload hoàn toàn trái ngược: tải ngay tài nguyên quan trọng trước khi người dùng nhìn thấy.
- Preload đảm bảo nội dung above-the-fold hiển thị nhanh, tối ưu LCP và trải nghiệm người dùng.
- Lazy load tiết kiệm băng thông và tăng tốc độ tải tổng thể bằng cách trì hoãn tải các tài nguyên không cần thiết ngay lập tức.
Có thể kết hợp hai kỹ thuật này như sau: preload các tài nguyên cần thiết trên màn hình đầu tiên, lazy load các hình ảnh/video ở phần dưới trang để cân bằng tốc độ và băng thông.

Những sai lầm thường gặp khi sử dụng preload
Mặc dù preload là một kỹ thuật tối ưu hiệu suất mạnh mẽ, nhưng nếu triển khai sai cách, nó có thể phản tác dụng, gây lãng phí băng thông và thậm chí làm chậm trang. Dưới đây là những lỗi phổ biến mà nhiều lập trình viên thường gặp khi sử dụng preload.
- Preload quá nhiều tài nguyên: Một trong những sai lầm thường gặp là preload quá nhiều tài nguyên cùng lúc. Mỗi yêu cầu preload đều chiếm băng thông và hàng đợi ưu tiên của trình duyệt. Nếu quá nhiều tài nguyên được preload, các file quan trọng có thể bị “dồn” hoặc tải chậm hơn, ảnh hưởng trực tiếp đến tốc độ hiển thị trang. Nguyên tắc vàng là chỉ preload những tài nguyên thực sự quan trọng cho việc hiển thị nội dung đầu trang (above-the-fold).
- Sai giá trị as: Thuộc tính as quyết định cách trình duyệt ưu tiên và xử lý tài nguyên. Một lỗi phổ biến là khai báo preload nhưng bỏ qua hoặc sai giá trị as, ví dụ preload một font nhưng đặt as="script" hoặc bỏ trống. Kết quả là trình duyệt tải tài nguyên với mức ưu tiên thấp nhất, vô hiệu hóa hoàn toàn lợi ích của preload. Luôn xác định đúng loại tài nguyên: style, script, font, image, video.
- Không dùng crossorigin cho font: Với font, nhiều lập trình viên thường quên thêm thuộc tính crossorigin, kể cả khi font được host trên cùng domain. Đây là vấn đề quan trọng bởi trình duyệt luôn tải font theo cơ chế CORS. Thiếu crossorigin sẽ khiến font bị tải hai lần: một lần qua preload, một lần qua @font-face, gây lãng phí băng thông và giảm hiệu suất hiển thị.
- Preload tài nguyên không sử dụng: Một lỗi khác là preload các tài nguyên không được sử dụng ngay hoặc không cần thiết. Ví dụ preload tất cả hình ảnh hoặc script phụ trợ mà người dùng chưa chắc sẽ cần ngay khi trang tải. Điều này chiếm băng thông và có thể trì hoãn việc tải các tài nguyên quan trọng, làm giảm hiệu suất tổng thể. Nguyên tắc là preload phải đi kèm với ưu tiên rõ ràng: chỉ những file cần thiết ngay khi tải trang mới nên preload.

Một số câu hỏi thường gặp về preload web
Khi triển khai preload, nhiều lập trình viên và quản trị website thường gặp các thắc mắc về cách sử dụng và hiệu quả thực tế. Dưới đây là những câu hỏi phổ biến cùng giải đáp chi tiết.
1. Preload có làm chậm website nếu sử dụng quá nhiều không?
Có thể. Mỗi yêu cầu preload đều chiếm băng thông và hàng đợi tải ưu tiên của trình duyệt. Nếu preload quá nhiều tài nguyên cùng lúc, các file quan trọng có thể bị dồn hoặc tải chậm hơn, dẫn đến việc trang hiển thị chậm hoặc mất cân bằng giữa các tài nguyên. Do đó, nguyên tắc quan trọng là chỉ preload những tài nguyên thực sự cần thiết cho nội dung hiển thị đầu trang (above-the-fold) và tài nguyên ảnh hưởng trực tiếp đến chỉ số Core Web Vitals.
2. Khi nào không nên dùng rel preload?
Preload không phải lúc nào cũng là lựa chọn tốt. Bạn không nên sử dụng preload cho các tài nguyên:
- Không cần thiết ngay khi trang tải, như script analytics hoặc quảng cáo.
- Hình ảnh/video phụ trợ xuất hiện ở phần cuối trang.
- Tài nguyên nặng nhưng ít quan trọng cho trải nghiệm người dùng.
Sử dụng preload cho các tài nguyên này không chỉ lãng phí băng thông mà còn có thể làm chậm việc tải các file quan trọng khác, làm giảm hiệu suất tổng thể của website.
3. Tại sao đã thêm thẻ rel preload nhưng Google PageSpeed vẫn báo lỗi?
Có một số lý do phổ biến khiến PageSpeed Insights vẫn báo lỗi preload dù bạn đã khai báo thẻ:
- Thiếu hoặc sai thuộc tính as: Trình duyệt không xác định đúng loại tài nguyên → ưu tiên tải thấp → PageSpeed coi như không tối ưu.
- Font thiếu crossorigin: Với font, nếu không khai báo crossorigin, tài nguyên có thể bị tải lại → PageSpeed cảnh báo.
- Tài nguyên không được sử dụng sớm: Nếu preload nhưng tài nguyên chỉ được dùng sau nhiều giây, PageSpeed sẽ đánh giá preload không hiệu quả.
- File preload không tồn tại hoặc đường dẫn sai: Trình duyệt không thể tải → báo lỗi.
Vì vậy để PageSpeed nhận diện preload hiệu quả, cần đảm bảo các yếu tố: đúng as, thêm crossorigin cho font, chỉ preload tài nguyên quan trọng và đảm bảo đường dẫn chính xác.
4. Preload web có hỗ trợ tất cả các trình duyệt không?
Preload được hỗ trợ trên hầu hết các trình duyệt hiện đại như Chrome, Firefox, Edge và Safari. Tuy nhiên, một số trình duyệt cũ hoặc phiên bản di động nhất định có thể không nhận biết thẻ < link rel="preload" > hoặc hỗ trợ chưa đầy đủ các loại tài nguyên. Khi đó, preload sẽ bị bỏ qua nhưng trang vẫn tải bình thường theo cơ chế mặc định. Vì vậy, preload nên được dùng như một tối ưu bổ sung, không nên dựa hoàn toàn vào nó để hiển thị nội dung quan trọng.
5. Tại sao khi preload font lại cần thuộc tính crossorigin?
Font thường được tải qua cơ chế CORS, ngay cả khi host trên cùng domain. Nếu thiếu thuộc tính crossorigin, trình duyệt sẽ coi font preload và font từ @font-face là hai tài nguyên khác nhau, dẫn đến tải font hai lần, gây lãng phí băng thông và làm chậm hiển thị văn bản. Thêm crossorigin="anonymous" giúp trình duyệt nhận diện font preload và font sử dụng cùng một tài nguyên, tối ưu hiệu suất và loại bỏ lỗi tải trùng.
6. Liệu có nên sử dụng preload toàn bộ file JavaScript không?
Không nên preload toàn bộ file JavaScript. Mặc dù preload giúp tài nguyên sẵn sàng trước khi cần nhưng JavaScript thường có dung lượng lớn và không phải tất cả đều cần tải ngay khi trang mở. Preload quá nhiều script có thể tắc nghẽn băng thông, làm chậm các tài nguyên quan trọng khác như CSS, font hoặc ảnh hero. Nguyên tắc là chỉ preload script quan trọng ảnh hưởng trực tiếp đến giao diện hoặc chức năng ban đầu, kết hợp với defer hoặc async để tối ưu tốc độ và trải nghiệm người dùng.

Qua bài viết của Phương Nam Vina, preload là một kỹ thuật tối ưu hiệu suất mạnh mẽ và linh hoạt, giúp các tài nguyên quan trọng của website như CSS, JavaScript, font, hình ảnh và video được tải sớm, rút ngắn thời gian hiển thị nội dung và nâng cao trải nghiệm người dùng. Khi được triển khai đúng cách, preload không chỉ cải thiện các chỉ số Core Web Vitals mà còn hỗ trợ SEO, giúp trang web được đánh giá cao hơn bởi Google. Để đạt hiệu quả tối ưu, bạn cần sử dụng preload một cách chiến lược: chỉ ưu tiên các tài nguyên thực sự cần thiết, xác định đúng loại tài nguyên bằng thuộc tính as và bổ sung crossorigin cho font. Đồng thời, kết hợp preload với các kỹ thuật khác như prefetch, preconnect, lazy load sẽ giúp cân bằng giữa tốc độ tải trang và tiết kiệm băng thông.
Tham khảo thêm:
Bí kíp giúp tăng tốc độ load website hiệu quả
