我记得读过有关使浏览器预加载页面的元标记。又是什么标签?
答案 0 :(得分:62)
预取包含在W3C spec under the name Resource Hints中。它在Firefox,Chrome,IE 11,Edge,12.1之后的Opera以及4.4.4的Android浏览器中实现,请参阅caniuse prefetch page以获取更多和最新的详细信息。
另请参阅相关技术的caniuse和规格页面(之后支持的浏览器从caniuse和2015年9月起更新):
IE 9仅实现了DNS预取,但称之为"prefetch"
(谨慎!)。 Chrome一段时间(至少到2013年)只进行了预渲染和DNS预取。 IE11为图像实现lazyload
;微软已经试图在规范中得到它,但到目前为止它并没有。 iCab is stated是第一个实现预取的浏览器,虽然这种行为是自动的,不受标记控制。
Mozilla Application Suite以及后来的Firefox实现了规范(规范实际上是基于Mozilla早期的预取实现,这有点基于RFC 2068中指定的Link:
标头。现已取代RFC 2616 [未引用Link:
标题]。有关详细信息,请参阅this old version of the docs()。)按照the documentation on MDN({ {3}}):
链接预取是一种浏览器机制,利用浏览器空闲时间下载或预取用户可能在不久的将来访问的文档。
浏览器会查找关键字类型为
<link>
或Link:
的HTMLnext
或HTTPprefetch
标头。
所以语法是:
<link rel="prefetch" href="/path/to/prefetch" />
您还可以使用Link:
HTTP标头:
Link: </page/to/prefetch>; rel=prefetch
或者<meta>
来模拟相同的HTTP标头:
<meta http-equiv="Link" content="</page/to/prefetch>; rel=prefetch">
请注意,也可以使用next
关系,但其主要功能是在导航中指示“下一页”,因此不应将其用于资源或不相关的信息。还会在HTTPS连接上执行预取。
iCab (seems to)已经在2001年左右实现了早期预取.iCab显然预取了内容页面(不是资源)的所有链接,没有遵循开发人员在标记中留下的任何暗示。
答案 1 :(得分:3)
有些用户代理可能会选择预先加载,但你不能赌它。
<link rel="next" href="http://www.example.com/link-reference">
答案 2 :(得分:2)
这可能不是一个很好的答案,但只是信息InstantClick.js可以在您实际点击之前预先加载链接。
如何运作
在访问者点击链接之前,他们将鼠标悬停在该链接上。在这两个事件之间,通常经过200毫秒到300毫秒。 InstantClick利用该时间来预加载页面,以便在您单击时页面已经存在。
答案 3 :(得分:2)
有几种方法可以预加载页面:
<link rel="dns-prefetch" href="//example.com">
。如果您需要使用第三方元素,这可能会有所帮助。<link rel="preconnect" href="https://example.com/">
<link rel="prefetch" href="imgs/image.png">
。请注意,这取决于浏览器决定下载资源是否有意义(可能会忽略您)<link rel="prerender" href="http://example.com/page">
。你应该非常确定这个人会打开这个页面,否则你只会浪费他的带宽。答案 4 :(得分:1)
预先对资产进行预编码是FLASH或HTML5项目中最难也是最简单的任务之一,因为我们已经完成了FLASH到HTML5的转换项目。
最简单的预加载器类型是静态预加载器,用于加载它们存在的电影。对于这些预加载器,您需要做的就是在预加载器屏幕上停止播放电影,通常是电影的第一帧,并将其保留在那里直到您能够确定电影已完全加载到Flash播放器中。
预加载器还可以在更改网页上的未缓存图像时停止任何闪烁或延迟,因为每次需要显示时都必须从服务器下载相同的图像。
我们在网络应用中使用了jQuery HMTL5 Loader(HTML5),您可以在此处看到Github Repo。
此插件需要一个JSON文件来获取它必须预加载的文件,它可以预加载图像,html5视频和音频源,脚本和文本文件。除此之外,它还有不同类型的装载机(圆形,线形,大计数器等)和附加功能等。
它是这样实现的。
<script>
var loaderAnimation = $("#html5Loader").LoaderAnimation();
$.html5Loader({getFilesToLoadJSON:'json file',
onUpdate: loaderAnimation.update,
debugMode:false
});
</script>
它可以在不同的浏览器中完美运行,包括Chrome,FireFox,Safari,Opera等,以及移动浏览器。
注意:我们已将此用于HTML5网络应用程序,这些应用程序在不同的平台上运行,包括Android和iOS。