<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.
}
