<link as=style href=/css/app.f60416c7.css rel=preload>
<link as=script href=/js/app.69189fdd.js rel=preload>
预加载的好处:
属性名 |
取值范围 |
介绍 |
as |
script:js 脚本font:字体文件style:样式表audio:音频video: 视频document:将被嵌入到<frame>或<iframe>元素内部的页面image: 图片fetch:将要通过 fetch 和 XHR 请求获取的资源比如jsonobject: 将被嵌入到<embed >元素内的文件worker:js 的 web worker 或 share worker |
该属性仅在 link 元素设置了rel=preload 是才能使用。规定了 link 元素要预加载的资源的类型,其取值范围也限制了哪些资源才可被预加载。设置了此属性使浏览器能够:1,更精确地优化资源加载优先级。2,匹配未来的加载需求,在适当的情况下,重复利用同一资源。3,为资源应用正确的内容安全策略。4,为资源设置正确的 Accept 请求头。 |
href |
<url> |
指定要加载资源的 URL,可以使绝对地址也可以是相对地址 |
rel |
preload(当前功能相关) |
此属性用于指明被链接的资源相对于当前页面的关系。属性值一定是被空格分开的链接类型值。这个属性最常见的取值是:stylesheet,表明被连接资源对当前文档来说是一个层叠样式表。当前取值 preload 表明链接资源是一个预加载的资源 |
type |
MIME涵盖类型 |
链接资源的 MIME 类型,在浏览器进行预加载到时候,这个属性将会非常有用,浏览器将使用 type 属性来判断它是否支持这一资源类型,如果支持,将正常预加载,下载将开始,否则对其忽略。 |
crossorigin |
加载字体文件的时候需要用到,详情往下看 |
<head>
<meta charset="utf-8">
<title>Responsive preload example</title>
<link rel="preload" href="bg-image-narrow.png" as="image" media="(max-width: 600px)">
<link rel="preload" href="bg-image-wide.png" as="image" media="(min-width: 601px)">
<link rel="stylesheet" href="main.css">
</head>
<body>
<header>
<h1>My site</h1>
</header>
<script>
var mediaQueryList = window.matchMedia("(max-width: 600px)");
var header = document.querySelector('header');
if(mediaQueryList.matches) {
header.style.backgroundImage = 'url(bg-image-narrow.png)';
} else {
header.style.backgroundImage = 'url(bg-image-wide.png)';
}
</script>
</body>
<link rel=preload href='font.woff2' as=font type='font/woff2' crossorigin />
var link = document.createElement("link");
link.href = "myscript.js";
link.rel = "preload";
link.as = "script";
document.head.appendChild(link);
var script = document.createElement("script");
script.src = "myscript.js";
document.body.appendChild(script);
<link rel="preload" as="style" href="asyncstyle.css" onload="this.rel='stylesheet'">
<link rel="preload" as="script" href="async_script.js"
onload="var script = document.createElement('script'); script.src = this.href; document.body.appendChild(script);">
<link rel="preload" as="image" href="map.png" media="(max-width: 600px)">
<link rel="preload" as="script" href="map.js" media="(min-width: 601px)">
Link: <thing_to_load.js>;rel="preload";as="script"
Link: <thing_to_load.woff2>;rel="preload";as="font";crossorigin
var DOMTokenListSupports = function(tokenList, token) {
if (!tokenList || !tokenList.supports) {
return;
}
try {
return tokenList.supports(token);
} catch (e) {
if (e instanceof TypeError) {
console.log("The DOMTokenList doesn't have a supported tokens list");
} else {
console.error("That shouldn't have happened");
}
}
};
var linkSupportsPreload = DOMTokenListSupports(document.createElement("link").relList, "preload");
if (!linkSupportsPreload) {
// Dynamically load the things that relied on preload.
}
