Tài nguyên Hints

Cách preload, preconnect, dns-prefetch, và prefetch tài nguyên hints speed lên trang loads và improve Core Web Vitals, và khi nào nên dùng mỗi một.

Xuất bản lần đầu: 2 thg 7, 2026 · Cập nhật lần cuối: 8 thg 8, 2026 · Advanced
Ngôn ngữ

Tài nguyên hints (dns-prefetch, preconnect, preload, prefetch) tell đó trình duyệt để làm network hoạt động — DNS lookups, connection setup, hoặc fetching — trước đó hơn điều này nếu không sẽ. dns-prefetch là cheapest (DNS chỉ); preconnect làm đó đầy đủ DNS+TCP+TLS handshake; preload là một mandatory fetch cho một muộn-discovered tài nguyên đó hiện tại trang cần (như an LCP image hoặc một font trong CSS) — nhưng của nó default priority vẫn phụ thuộc vào đó tài nguyên loại, không tự động "cao" (fetchpriority là một tách biệt hint cho đó); prefetch là một thấp-priority speculative fetch cho một tương lai trang. Đó big chế độ lỗi là overuse — preload mọi thứ và bạn đã prioritized không có gì. Và là honest về SEO: theo Gary Illyes (Feb 2026), những hints không help Googlebot crawl hoặc chỉ mục nhanh hơn; của họ giá trị là hoàn toàn on đó real-người dùng side, mà luồng vào Core Web Vitals, một of several các tín hiệu Google xếp hạng các hệ thống dùng — good scores không bảo đảm top thứ hạng.

Tóm tắt — main tài nguyên hints form spectrum của trình duyệt cost: dns-prefetch (DNS lookup chỉ) → preconnect (DNS + TCP + TLS) → preload ( mandatory fetch của cụ thể, muộn-discovered tài nguyên) → prefetch (lowest-priority speculative fetch cho tương lai navigation). modulepreload là preload sibling cho JS modules. preload là chỉ một trình duyệt là obligated để fetch — đó khác từ nói rằng nó tự động cao priority; default priority vẫn phụ thuộc vào tài nguyên loại, và fetchpriority là tách biệt hint cho raising nó. as thuộc tính là bắt buộc on preload; crossorigin là bắt buộc cho fonts và khác anonymous-chế độ fetches, hoặc trình duyệt downloads tài nguyên twice. Overuse là dominant thất bại chế độ. và theo Gary Illyes (Feb 2026), none của điều này helps Googlebot — SEO giá trị là hoàn toàn gián tiếp, qua Cốt lõi Web Chỉ số quan trọng, mà là một của several các tín hiệu xếp hạng, không deterministic một.

Evidence for this claim Preload declares a resource needed for the current navigation and fetches it with the resource's destination semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: preload Evidence for this claim Preconnect asks the browser to establish an early connection to an origin and should be limited to important origins. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: preconnect

spectrum của trình duyệt “cost”

sạch nhất mental model cho tài nguyên hints là để line them lên by Cách nhiều hoạt động bạn’re asking trình duyệt để làm lên front:

  1. dns-prefetch — resolve hostname để IP. Cheapest.
  2. preconnect — DNS lookup plus TCP handshake plus TLS negotiation cho HTTPS. đầy đủ open connection, ready để sử dụng.
  3. preload — go thực ra fetch cụ thể tài nguyên, hiện tại. trình duyệt phải xử lý fetch, nhưng đó không tự động làm nó cao priority — nhiều hơn on đó dưới.
  4. modulepreload — preload sibling cho JavaScript modules; fetches module vào trình duyệt module map sử dụng module-script rules thay vì generic fetch.
  5. prefetch — go fetch cụ thể tài nguyên, nhưng tại lowest priority, Đối với một trang người dùng hasn’t navigated để tuy vậy.

họ go trong một của hai places: <link> element trong <head>, hoặc HTTP Link phản hồi header (nhiều hơn on header path, và 103 Sớm Hints, dưới). None của Đây là document-cấp độ Speculation Rules API — đó tách biệt mechanism cho prerendering/prefetching toàn bộ navigations, covered trong prefetch section dưới.

dns-prefetch

dns-prefetch thực hiện chỉ đó DNS lookup cho một cross-origin máy chủ ahead of time — điều này không open một connection. Đó làm điều này đó cheapest hint và một sensible default cho đó nhiều thấp hơn-priority bên thứ ba domains một trang touches (analytics, tag managers, minor widgets). Trong my own Largest Contentful Paint hướng dẫn I làm đó practical point đó “DNS-prefetch has better support than preconnect” (bản dịch) «DNS-prefetch có tốt hơn hỗ trợ hơn preconnect» — so đây là cũng một reasonable fallback cho các trình duyệt nơi preconnect không honored.

<link rel="dns-prefetch" href="https://analytics.example.com">

preconnect

preconnect goes further: nó opens toàn bộ connection — DNS, TCP, và (cho HTTPS) TLS handshake — so đó by time trình duyệt cần tài nguyên, pipe là đã warm. đó bigger win hơn dns-prefetch, nhưng nó cũng nhiều hơn expensive để trình duyệt, mà là Vì sao nó xuất hiện với hai quan trọng caveats:

  • Reserve điều này cho của bạn hầu hết cốt yếu cross-origin connections. MỘT handful (của bạn font host, của bạn image CDN, một cốt yếu script origin) — không mọi thứ. Google Lighthouse “Preconnect to required origins” (bản dịch) «Preconnect để bắt buộc origins» audit và web.dev cả hai warn đó unnecessary preconnects delay other quan trọng hoạt động.
  • An unused connection là wasted hoạt động. Các trình duyệt close một connection đó không dùng trong về 10 seconds, so một preconnect để điều gì đó bạn không thực ra fetch soon chỉ burns handshake capacity cho không có gì.

cho fonts, preconnect cần crossorigin thuộc tính — fonts là luôn fetched trong anonymous (CORS) chế độ, và không có nó trình duyệt opens thứ hai connection anyway, defeating point.

<link rel="preconnect" href="https://fonts.example.com" crossorigin>

preload

preload là một trình duyệt là obligated để execute — nếu nó xử lý tag, nó phải bắt đầu fetch cho tài nguyên hiện tại trang definitely cần nhưng sẽ nếu không discover muộn. đó statement về Khi fetch bắt đầu, không tự động về priority: default priority preloaded tài nguyên nhận vẫn phụ thuộc vào tài nguyên loại và trình duyệt (web.dev là rõ ràng đó images, ví dụ, stay thấp priority theo mặc định ngay cả Khi preloaded). nếu bạn muốn để thực ra raise tài nguyên priority, đó tách biệt, rõ ràng hint — fetchpriority — không điều gì đó preload làm on của nó own. kinh điển candidates cho preload:

  • Fonts referenced bên trong CSS file — trình duyệt không know font tồn tại cho đến khi nó downloads và parses CSS, so preload surfaces nó trước đó.
  • ** LCP (hero) image**, especially một đặt qua CSS hoặc srcset đó không phải đơn giản sớm <img> trong HTML.
  • Cốt yếu, muộn-discovered JavaScript hoặc CSS.

Hai các thuộc tính làm hoặc break nó:

  • as là bắt buộc. nó tells trình duyệt Điều gì loại của tài nguyên Đây là so nó có thể assign right priority và match bộ nhớ đệm entry. Omit nó và trình duyệt xử lý yêu cầu như generic XHR — sai priority, và thường duplicate download.
  • crossorigin cho fonts — giống nhau rule as preconnect; miss nó và font downloads twice.

nhiều hơn generally, preload chỉ nhận reused nếu eventual yêu cầu matches nó: giống nhau URL, giống nhau as/đích, giống nhau type hoặc media condition, matching crossorigin/credentials chế độ, và — nơi họ apply — matching integrityreferrerpolicy. cho responsive image preload, đó cũng có nghĩ là sử dụng imagesrcset/imagesizes đó mirror srcset/sizes trình duyệt sẽ thực ra pick, không single unconditional fallback URL. Nhận bất kỳ của những điều này out của sync và trình duyệt either có thể’t reuse preload (duplicate fetch) hoặc fetches sai candidate.

Cho đó LCP image cụ thể, Google hiện tại khuyến nghị là để pair preload với fetchpriority="high" so đó fetch bắt đầu alongside đó stylesheet. Này là đó combo I mô tả trong my LCP hướng dẫn cũng — fetchpriority="high" nhận đó image earliest, và preloading là một mạnh second tín hiệu, hữu ích vì as I note ở đó, “Early Hints don’t work on all browsers, so you may also want to preload the image.” (bản dịch) «Sớm Hints không hoạt động on all các trình duyệt, so bạn có thể cũng muốn để preload đó image.»

<!-- LCP image -->
<link rel="preload" fetchpriority="high" as="image" href="/hero.webp" type="image/webp">

<!-- Font in CSS -->
<link rel="preload" as="font" type="font/woff2" href="/fonts/inter.woff2" crossorigin>

overuse warning áp dụng hardest ở đây: nếu mọi thứ là preloaded tại cao priority, effectively không có gì là. web.dev là rõ ràng đó excessive preloads nguyên nhân bandwidth contention, và nó hits hardest on chậm networks. Preload hai hoặc three genuinely muộn-discovered, genuinely cốt yếu các tài nguyên — không nhiều hơn.

modulepreload

modulepreload là preload đối tác tương ứng cho JavaScript modules. thay vì generic tài nguyên fetch, nó dùng module-script fetch rules và diễn đạt kết quả straight vào trình duyệt module map — so Khi module là sau đó imported, trình duyệt đã có nó. Depending on trình duyệt, nó có thể cũng go ahead và fetch module static imports. Hỗ trợ và Cách deep đó dependency-fetching goes cả hai vary by trình duyệt, so kiểm thử thực tế behavior thay vì assuming nó matches preload.

<link rel="modulepreload" href="/js/app.module.js">

prefetch

prefetch là odd một out: nó không về hiện tại trang tại all. nó thấp-priority, speculative fetch cho tài nguyên tương lai navigation sẽ có khả năng cần — tiếp theo step trong checkout, bài viết người dùng là về để nhấp. vì nó chạy tại lowest priority, nó không steal bandwidth từ hiện tại trang cốt yếu các tài nguyên, và prefetched files land trong HTTP bộ nhớ đệm (nếu họ’re có thể lưu vào bộ nhớ đệm) ready cho tiếp theo navigation.

trade-off: nếu người dùng không bao giờ goes ở đó, bạn’ve spent bytes cho không có gì — so apply nó thoughtfully và tránh nó on chậm hoặc metered connections.

<link rel="prefetch" href="/checkout/step-2" as="document">

Looking forward, Speculation Rules API là modern successor để prefetch cho predicting giống nhau-trang web navigations; web.dev notes nó xử lý cases đơn giản prefetch có thể’t (như non-có thể lưu vào bộ nhớ đệm navigations) và behaves nhiều hơn consistently trên origins. prefetch vẫn hữu ích và nhiều hơn broadly supported trong meantime.

Preload so với. prefetch so với. preconnect so với. dns-prefetch

HintĐiều gì nó làmPrioritytrình duyệt phải obey?Best cho
dns-prefetchDNS lookup chỉSuggestionnhiều thấp hơn-priority thứ ba-party domains
preconnectDNS + TCP + TLS (đầy đủ connection)Suggestioncủa bạn một vài phần lớn cốt yếu cross-origin origins
preloadFetch cụ thể tài nguyêntài nguyên/trình duyệt-phụ thuộc — không tự động cao; pair với fetchpriority để raise nó, nếu processedMuộn-discovered cốt yếu các tài nguyên on điều này trang
modulepreloadFetch JS module vào module maptài nguyên/trình duyệt-phụ thuộc, nếu processedMuộn-discovered ES modules điều này trang cần
prefetchFetch cụ thể tài nguyên, lowest priorityLowestSuggestioncác tài nguyên cho có khả năng tương lai navigation

tài nguyên hints và Core Web Vitals

Ở đây part SEOs thực ra care về — mà hint moves mà chỉ số:

  • dns-prefetch / preconnect shave connection latency, mà hiển thị lên as nhanh hơn bắt đầu để loading của bạn cốt yếu các tài nguyên — feeding LCP và, trước khi nó, FCP.
  • preload acts on LCPFCP phần lớn trực tiếp by starting fetch của LCP image hoặc render-cốt yếu font/stylesheet trước đó.
  • prefetch không touch hiện tại trang Core Web Vitals tại all — nó improves tiếp theo trang LCP/FCP by có của nó các tài nguyên đã được lưu đệm.

None của những điều này trực tiếp ảnh hưởng INP hoặc CLS, though getting fonts trong trước đó (qua preload) có thể indirectly reduce layout shift từ font swaps — đó thực sự font loading topic, và render-blocking các tài nguyên là sibling bài viết on fetch-order side của giống nhau vấn đề.

Làm tài nguyên hints help Google crawl hoặc chỉ mục my trang web?

Không — và Đây là single phần lớn quan trọng nuance để nhận right, vì phần lớn nội dung on điều này topic là vague về nó.

Trong một February 2026 Tìm kiếm Off đó Record episode, Google Gary Illyes explained vì sao Googlebot largely bỏ qua những hints: they solve trình duyệt và network latency các vấn đề đó Google own crawling infrastructure không có. As reported by Search Engine Journal, Illyes đã nói “it’s very helpful if you have like a crappy internet to do DNS Prefetching for example. In our case, we don’t need to because we can talk very fast to all the cascading DNS servers.” (bản dịch) «đây là very helpful nếu bạn có như một crappy internet để làm DNS Prefetching ví dụ. Trong của chúng ta case, we không cần để vì we có thể talk very fast để all đó cascading DNS các máy chủ.» Nhảy đến trích dẫn He đã làm đó giống nhau point về preload — “Same with preload. If we are not synchronous then we don’t particularly need to look at preload.” (bản dịch) «Giống nhau với preload. Nếu we không phải synchronous thì we không particularly cần để xem preload.» Nhảy đến trích dẫn

So đó correct causal chain là: tài nguyên hints → nhanh hơn real-người dùng experience → tốt hơn Core Web Vitals → một of several các tín hiệu Google xếp hạng các hệ thống dùng. Google own trang experience tài liệu là rõ ràng đó có không single trang-experience tín hiệu, đó Core Web Vitals là dùng by xếp hạng các hệ thống alongside others, và đó good CWV scores không bảo đảm một top xếp hạng — relevance vẫn wins over trang experience. So đây là không không có gì — nhưng tài nguyên hints là một UX/performance tactic đầu tiên, và của họ SEO giá trị là hoàn toàn downstream và non-deterministic. không sell them internally as “this helps Google read the page.” (bản dịch) «này helps Google đọc đó trang.»

Bing, cho Điều gì nó worth, có published không hint-cụ thể hướng dẫn tại all — của nó quản trị viên web hướng dẫn references trang web speed generically. trình duyệt-cấp độ benefits (nhanh hơn loads, tốt hơn chỉ số quan trọng) apply giống nhau regardless của công cụ tìm kiếm, so có không tách biệt “Bing angle” để optimize cho ở đây.

tài nguyên hints không có để trực tiếp trong của bạn HTML. Bạn có thể gửi them as HTTP Link phản hồi header — Link: </hero.webp>; rel=preload; as=image — mà là Cách máy chủ- và CDN-cấp độ implementations hoạt động. phần lớn interesting version của Đây là 103 Sớm Hints: preliminary HTTP status đó lets edge (như Cloudflare) gửi được lưu đệm preload/preconnect Link các header trước khi origin máy chủ có ngay cả finished generating đầy đủ phản hồi — giving trình duyệt head bắt đầu on connections và fetches trong khi nó chờ. I cover 103 status itself trong my HTTP các mã trạng thái hướng dẫn, nơi I mô tả nó as letting bạn preload các tài nguyên để help LCP cho Core Web Vitals.

phổ biến mistakes

  • Preloading cũng nhiều các tài nguyên — cardinal sin; nó tạo bandwidth contention và có thể làm trang chậm hơn overall.
  • Preloading điều trình duyệt đã tìm thấy sớm — sớm <img> trong HTML không cần preloading; bạn’re chỉ spending yêu cầu slot.
  • Bị thiếu as on preload — sai priority và thường double download.
  • Bị thiếu crossorigin on font preload/preconnect — mismatched bộ nhớ đệm entry có nghĩ là font downloads twice.
  • Stale, unused preconnect tags — left behind sau khi bạn đã xóa thứ ba-party script họ là cho, holding connections open cho 10 seconds trước khi trình duyệt cho lên.
  • Ignoring cost beyond của bạn own trang — unused hints không chỉ waste của bạn own bandwidth; họ consume sockets và máy chủ/thứ ba-party capacity, và dns-prefetch/preconnect có thể reveal có khả năng destinations để network observers. các trình duyệt có thể cũng bỏ qua, cancel, hoặc limit hints dưới Save-Dữ liệu, thấp-power, hoặc hỗ trợ constraints — prefetch trong particular là được xem như tùy chọn và skipped cho reduced-dữ liệu người dùng, so không assume hint bạn shipped là thực ra đang chạy cho mỗi khách truy cập.
Evidence for this claim Unused preconnects and fetch hints can consume sockets, bandwidth, CPU, memory and server/third-party capacity, reveal likely destinations or trigger privacy-sensitive network activity; browsers may ignore, cancel or limit hints under settings, support or data-saving constraints. Scope: future-resource speculation Confidence: high · Verified: Prefetching, prerendering, and service worker precaching

Cách kiểm thử và audit

  • Lighthouse / PageSpeed Insights — đó “Preconnect to required origins” (bản dịch) «Preconnect để bắt buộc origins» audit flags bị thiếu preconnects on key các yêu cầu; treat điều này as một prompt để thêm một targeted một, không để carpet-bomb.
  • Chrome DevTools → Network panel — đó Priority cột cho thấy điều gì đó trình duyệt thực ra prioritized, và bạn có thể spot preloaded các tài nguyên fetching twice (đó as/crossorigin bugs).
  • Kiểm tra cho unused preconnects — nếu một preconnected origin không bao giờ xuất hiện as an thực tế yêu cầu, xóa đó hint.

cho các chỉ số những điều này all feed, see Core Web VitalsLargest Contentful Paint; web performance tools bài viết covers việc đo lường stack trong depth.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.