您是否曾想過,在不延遲網頁 onload
事件的情況下,讓瀏覽器知道網頁需要的重要字型、指令碼或其他資源?<link rel="preload">
可讓網頁開發人員使用熟悉的 HTML 元素語法,搭配幾個關鍵屬性來決定確切行為,這是草稿標準,會在 Chrome 50 版發布。
透過 <link rel="preload">
載入的資源會儲存在瀏覽器本機中,且在 DOM、JavaScript 或 CSS 中引用前,這些資源會處於無效狀態。舉例來說,以下是一種可能的用途:預先載入指令碼檔案,但不會立即執行,因為如果透過 DOM 中的 <script>
標記加入指令碼,就會立即執行。
<link rel="preload" href="used-later.js" as="script">
<!-- ...other HTML... -->
<script>
// Later on, after some condition has been met, we run the preloaded
// JavaScript by inserting a <script> tag into the DOM.
var usedLaterScript = document.createElement('script');
usedLaterScript.src = 'used-later.js';
document.body.appendChild(usedLaterScript)
</script>
那麼,這裡發生了什麼事?網頁開發人員應該熟悉範例中使用的 href
屬性,因為這是用來指定任何已連結資源的網址的標準屬性。
不過,您可能不熟悉 as
屬性,這項屬性會用於 <link>
元素的內容中,為瀏覽器提供有關預先載入要求目的地的更多背景資訊。這項額外資訊可確保瀏覽器設定適當的請求標頭、請求優先順序,以及套用任何可能適用於正確資源情境的相關內容安全性政策指令。
瞭解更多 (大量) 資訊
Yoav Weiss 撰寫了使用 <link rel="preload">
的完整指南。如果您對這項功能感興趣,並想開始在自己的網頁上使用,建議您詳閱這篇文章,進一步瞭解這項功能的優點和創意用途。
再見,<link rel="subresource">
<link rel="preload">
取代 <link rel="subresource">
,後者有重大的錯誤和缺點,且從未在 Chrome 以外的瀏覽器中實作。因此,Chrome 50 已移除對 <link rel="subresource">
的支援。