chrome的新版本增加了对<link rel="preload">的支持。他们贴了很多关于原始文件的信息。有人能简单解释一下它是如何工作的吗?与没有rel="preload"的情况相比,有什么不同?

最佳答案

在最基本的形式中,它将linkrel="preload"设置为高优先级,与浏览器可以决定是否是好主意的预取不同,preload将强制浏览器这样做。
==更深入的观察:===
这是w3c的一个片段
许多应用程序需要对资源何时
获取、处理并应用于文档。例如,
某些资源的加载和处理可能会被
应用程序减少资源争用并提高
初始荷载。这种行为通常是通过移动
资源获取到由
应用程序-即通过注入启动资源获取
元素,或通过xmlhttprequest,当特定应用程序
满足条件。
但是,也有一些情况需要获取一些资源
但它们的处理和执行逻辑是
根据应用程序特定的要求-例如依赖性
管理、有条件装载、订购保证等。
目前,如果没有
性能惩罚。
通过现有元素之一来声明资源(例如IMG),
脚本,链接)耦合资源获取和执行。鉴于,
应用程序可能要获取,但会延迟资源的执行
直到满足某个条件。使用xmlhttprequest获取资源
避免上述行为会因隐藏而导致严重的性能损失
来自用户代理的dom和预加载解析器的资源声明。
只有当相关的javascript
执行,这是因为在大多数页面上有大量的阻塞脚本
引入严重的延迟并影响应用程序性能。这个
link元素上的preload关键字提供声明性获取。
处理上述启动早期
获取并将获取与资源执行分离。像这样的,
preload关键字用作一个低级原语,可以启用
用于构建自定义资源加载和执行行为的应用程序
不向用户代理隐藏资源并导致延迟
资源获取惩罚。
例如,应用程序可以使用preload关键字启动
css资源的早期、高优先级和非呈现阻塞获取
然后可以由应用程序在适当的时间应用:

<!-- preload stylesheet resource via declarative markup -->
<link rel="preload" href="/styles/other.css" as="style">
<!-- or, preload stylesheet resource via JavaScript -->
<script>
var res = document.createElement("link");
res.rel = "preload";
res.as = "style";
res.href = "styles/other.css";
document.head.appendChild(res);
</script>

以下是对W3C的深入了解:https://w3c.github.io/preload/
但是如果你打算使用它,请注意浏览器的支持并没有那么好。全球浏览器支持率为82%。
以下是完整的列表:http://caniuse.com/#search=preload

10-05 19:47