Link prefetching allows web browsers to pre-load resources. This speeds up both the loading and rendering of web pages. Prefetching was first introduced in HTML5.

Prefetching is accomplished through hints in web pages. These hints are used by the browser to prefetch links. Resources which can be prefetched include: JavaScript, CSS, image, audio, video, and web fonts. DNS names and TCP connections can also be hinted for prefetching.

Prefetching in HTML5

There are two W3C standards covering prefetching for HTML5:

  • Link preload
  • Hints to specific URLs. Common hints include JavaScript, CSS, images and web fonts.
  • Resource hints
  • Hints to the browser. Common hints include DNS queries, opening TCP connections, and page pre-rendering.

HTML5 methods for prefetch hints:

  • Standard link prefetch (supported by most browsers):<code><nowiki><link rel="prefetch" href="http://www.example.com/"></nowiki></code>
  • DNS prefetch (Mozilla Firefox, Google Chrome, and others):<code><nowiki><link rel="dns-prefetch" href="http://example.com/"></nowiki></code>
  • Page pre-rendering (Google Chrome, Internet Explorer and others):<code><nowiki><link rel="prerender" href="/page/to/prerender"></nowiki></code>
  • Lazy-load of images (Internet Explorer):<code><nowiki><img src="image.jpg" lazyload></nowiki></code>
  • <code>Link</code> for HTTP headers: Example below.

<pre>

Link: <//pagead2.googlesyndication.com>; rel=dns-prefetch,

</js/bootstrap.min.js>; as=script; rel=preload,

</ads.html>; rel=prerender,

</css/bootstrap.min.css>; as=style; rel=preload

</pre>

Browser support

{| class="wikitable sortable" style="text-align: center;"

|-

! rowspan="2" | Browser

! colspan="4" | Prefetching Supported

|-

! style="width: 13%;" | Standard link prefetching

! style="width: 13%;" | DNS prefetching

! style="width: 13%;" | Prerendering

! style="width: 13%;" | Lazy-load (Images)

|-

! Android browser

|

|

|

|

|-

!|Opera

|

  • Browsing using a Google Web Accelerator (discontinued product, may technically be called precaching)
  • The Blue Coat proxy appliance is known to use non‑compliant prefetching.

Modern browsers

  • Mozilla Firefox supports DNS prefetching, as of version 3.5.
  • Google Chrome supports prefetching of linked web content by "prerendering", as of version11.
  • Internet Explorer supports prefetching of IP addresses by "DNS prefetching", as of version9.
  • As of version 11, Internet Explorer supports the following set of features to expand its prefetching capabilities: "prerender", "dns-prefetch" and "lazyload" (images only).
  • Bing has employed the use of prefetching and preloading since the release of Internet Explorer 11 (October 2013). However, it is common for website operators to use these requests outside of this constraint. Plain hyperlinks (which almost universally result in GET requests) are often used to implement logout functionality and account verification, e.g., when a user completes an account creation form, and an automated service sends a verification e-mail to the user's given e-mail address.

Similarly, it is entirely possible for a hosting service to provide a Web front end to manage files, including links that delete one or more files. Users who visit pages containing these types of links, (whilst using a browser which employs an indiscriminate link prefetcher), might find that they have been logged out or that their files have been deleted.

Additionally, there are a number of criticisms regarding the privacy and resource usage implications of link prefetching:

  • Cookies set or sent to third parties compromise Web privacy.
  • Enables essentially/borderline Zero-click attack malware installation via 0day merely because a malware-spreading link is prefetched.
  • Users and website operators who pay for the amount of bandwidth they use find themselves paying for traffic for pages the user might not actually visit, and advertisers might pay for viewed ads on sites that are never visited.
  • Web statistics such as browser usage, search engine referrers, and page hits may become less reliable due to registering page hits that were never seen by the user.
  • Users may be exposed to more security risks by downloading more pages, or from un-requested sites (additionally compounded as drive-by downloads become more advanced and diverse).
  • Users may violate acceptable-use policies of their network or organization if prefetching accesses unauthorized content.

In the case of mobile devices or for users with a limited bandwidth allowance, prefetching may result in an unnecessary costly drain on limited bandwidth.

It is possible for implementations to prefetch links even when they are not specified as prefetch links.

In the case of prerendering, Google warns that improper use may result in the aforementioned increased bandwidth usage, slower loading of other links, and slightly stale content.