一:Preload
preload是一個預載入關鍵字。它顯式地向瀏覽器宣告一個需要提前載入的資源。使用方式如下:
在<head>中寫入<link rel="preload" href="some-resource-url" as="xx">(包括用JS建立<link>元素並插入到<head>)
在HTTP頭部加上Link: <some-resource-url>; rel=preload; as=xx
當瀏覽器“看”到這樣的宣告後,就會以一定的優先順序在後臺載入資源。載入完的資源放在HTTP快取中。而等到要真正執行時,再按照正常方式用標籤或者程式碼載入,即可從HTTP快取取出資源。
使用Preload載入資源的方式有以下幾個特點:
提前載入資源
資源的載入和執行分離
不延遲網頁的load事件(除非Preload資源剛好是阻塞 window 載入的資源)
二:預測解析
在解析 HTML 時收集外鏈資源。並將它們新增到一個列表,在後臺並行下載。預測解析也實現了提前載入以及載入和執行分離。
三:async
對於async,這個是html5中新增的屬性,它的作用是能夠非同步的載入和執行指令碼,不因為載入指令碼而阻塞頁面的載入。一旦載入到就會立刻執行在有async的情況下,js一旦下載好了就會執行,所以很有可能不是按照原本的順序來執行的。如果js前後有依賴性,用async,就很有可能出錯。
四:defer
對於defer,我們可以認為是將外鏈的js放在了頁面底部。js的載入不會阻塞頁面的渲染和資源的載入。不過defer會按照原本的js的順序執行,所以如果前後有依賴關係的js可以放心使用