Fél*_*lli 62
预取包含在名为Resource Hints的W3C规范中.它在Firefox,Chrome,IE 11,Edge,12.1之后的Opera和4.4.4的Android浏览器中实现,请参阅caniuse预取页面以获取更多和最新的详细信息.
另请参阅相关技术的caniuse和spec页面(之后支持的浏览器从caniuse和2015年9月的最新版本中检索):
IE 9只实现了DNS预取,但称之为"prefetch"
(注意!).Chrome一段时间(至少到2013年)只进行了预渲染和DNS预取.IE11实现lazyload
了图像; 微软已经试图在规范中得到它,但到目前为止它并没有.iCab 被认为是第一个实现预取的浏览器,虽然这种行为是自动的,不受标记控制.
Mozilla Application Suite及更高版本的Firefox实现了规范(规范实际上是基于Mozilla早期的预取实现,它有点基于RFC 2068中Link:
指定的头,现在已被RFC 2616取代[未引用]的]头.见旧版本的文档中(Link:
)更多细节.)根据MDN的文件():
链接预取是一种浏览器机制,它利用浏览器空闲时间来下载或预取用户可能在不久的将来访问的文档.
浏览器查找任一个HTML
<link>
或HTTPLink:
与关系类型的任一标头next
或prefetch
.
所以语法是:
<link rel="prefetch" href="/path/to/prefetch" />
Run Code Online (Sandbox Code Playgroud)
您还可以使用Link:
HTTP标头:
Link: </page/to/prefetch>; rel=prefetch
Run Code Online (Sandbox Code Playgroud)
或者a <meta>
来模拟相同的HTTP标头:
<meta http-equiv="Link" content="</page/to/prefetch>; rel=prefetch">
Run Code Online (Sandbox Code Playgroud)
请注意,next
也可以使用该关系,但其主要功能是在导航中指示"下一页",因此不应将其用于资源或不相关的信息.还会在HTTPS连接上执行预取.
iCab 似乎(已经在2001年左右实现了早期预取.iCab显然预取了内容页面的所有链接(不是资源),没有遵循开发人员在标记中留下的任何暗示.
有几种方法可以预加载页面:
<link rel="dns-prefetch" href="//example.com">
在<head>
文档中添加。如果您需要使用第三方元素,这可能会有所帮助。<link rel="preconnect" href="https://example.com/">
<link rel="prefetch" href="imgs/image.png">
。请注意,这由浏览器决定下载资源是否有意义(它可能会忽略您)<link rel="prerender" href="http://example.com/page">
。您应该非常确定该人会打开该页面,否则您只会浪费他的带宽。