预取包含在W3C 规范名为“资源提示” http://www.w3.org/TR/resource-hints/#dfn-prefetch。它在 Firefox、Chrome、IE 11、Edge、Opera 12.1 之后实现,以及 Android 浏览器从 4.4.4 开始实现,请参见caniuse预取页面 http://caniuse.com/#feat=link-rel-prefetch了解更多最新详情。
另请参阅相关技术的 caniuse 和规范页面(随后支持的浏览器从 caniuse 检索,并且截至 2015 年 9 月是最新的):
- 预渲染caniuse http://caniuse.com/#feat=link-rel-prerender / spec http://www.w3.org/TR/resource-hints/#dfn-prerender(IE 11、Edge、Chrome、Opera)
- 预连接caniuse http://caniuse.com/#feat=link-rel-preconnect / spec http://www.w3.org/TR/resource-hints/#dfn-preconnect(火狐、Chrome 46、Opera 33)
- DNS预取caniuse http://caniuse.com/#feat=link-rel-dns-prefetch / spec http://www.w3.org/TR/resource-hints/#dfn-dns-prefetch (IE9 (见下面的注释)、IE10、除 Opera Mini 之外的所有其他浏览器,或许还有 iOS Safari 和 Android 浏览器)
IE 9 只实现了 DNS 预取,但调用了它"prefetch"
(警告!)。 Chrome 有一段时间(至少到 2013 年)只做了预渲染和 DNS 预取。 IE11实现lazyload http://caniuse.com/#feat=lazyload, 对于图像;微软曾试图将其纳入规范,但到目前为止还没有。出租车已说明 https://en.wikipedia.org/wiki/Link_prefetching#Browser_support是第一个实现预取的浏览器,尽管这种行为是自动的,不受标记控制。
历史背景
Mozilla 应用程序套件以及后来的 Firefox 都实现了该规范(该规范实际上基于 Mozilla 早期的预取实现,这在某种程度上基于Link:
标头指定于RFC 2068 https://www.rfc-editor.org/rfc/rfc2068现在已被取代RFC 2616 https://www.rfc-editor.org/rfc/rfc2616[其中没有引用Link:
标题]。看这个旧版本的文档 https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ%24revision/53544 (???? https://web.archive.org/web/20150912105244/https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ%24revision/53544)了解更多详细信息。)根据MDN 上的文档 https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ (???? https://web.archive.org/web/20150621235746/https://developer.mozilla.org/en-US/docs/Web/HTTP/Link_prefetching_FAQ):
链接预取是一种浏览器机制,它利用浏览器空闲时间来下载或预取用户在不久的将来可能访问的文档。
浏览器会查找 HTML<link>
或 HTTPLink:
关系类型为以下任一的标头next
or prefetch
.
所以语法是:
<link rel="prefetch" href="/path/to/prefetch" />
您还可以使用Link:
HTTP 标头:
Link: </page/to/prefetch>; rel=prefetch
Or a <meta>
模拟相同的 HTTP 标头:
<meta http-equiv="Link" content="</page/to/prefetch>; rel=prefetch">
请注意,next
也可以使用relation,但它的主要功能是指示导航中的“下一页”,因此您不应该将其用于资源或不相关的信息。预取也在 HTTPS 连接上执行。
iCab
iCab seems to http://lists.webjunction.org/wjlists/web4lib/2001-February/005076.html (???? https://web.archive.org/web/20110928002946/http://lists.webjunction.org/wjlists/web4lib/2001-February/005076.html)在 2001 年左右实施了早期预取。iCab 显然预取了内容页面(而不是资源)的所有链接,没有遵循开发人员在标记中留下的任何提示。