乙個簡單的例子了解async跟defer

2021-09-11 12:54:31 字數 1437 閱讀 5960

當我們要在頁面當中引入指令碼的時候,一般用的是script標籤(i.e.

複製**把script放body尾的話有個缺點就是要等dom載入好了才會去載入並執行script指令碼。前面開頭的時候說過獲取/載入指令碼內容不會阻塞,只有執行指令碼內容的時候才會阻塞!如果能在載入dom的同時載入script指令碼,等到dom解析好了再執行指令碼,這樣就可以節省部分載入指令碼的時間。當指令碼比較大時提高的效率會很可觀。於是就有了script標籤裡的defer屬性: 並行載入該指令碼,直到dom解析完了並且它前面含有defer的指令碼都執行完後,才可以執行該指令碼。

test js tag async and defer attributestitle>

defer

src='./script1.js'>

script>

defer

src='./script2.js'>

script>

head>

id='load-experiment'> hello world h1>

body>

html>

複製**

console裡的輸出為:

script1 is loading at 1496760312686

script1.js:4 script1 element ​

script1.js:8 script1 finishes loading at 1496760313686

script2.js:2 script2 is loading at 1496760313686

script2.js:4 script2 element ​

script2.js:8 script2 finishes loading at 1496760315686複製**

發現:

複製**

多次重新整理頁面可以看到每次輸出結果不一樣。體現在:

頁面上加了async的指令碼無法保證其執行順序,這通常也是隱藏bug的**。除非你確定該指令碼跟頁面其他指令碼無依賴關係,不然慎用async吧。

綜上所述,最後引入指令碼的形式大概是這樣滴:

src="headscripts.js">

scripts>

defer

src="bodyscripts.js">

script>

head>

id='load-experiment'> hello world h1>

async

src="forumwidget.js">

script>

async

src="chatwidget.js">

script>

body>

html>

複製**

**示例

乙個例子了解apacheBench的簡單使用方法

apachebench,即ab,apache http server benchmarking tool,是apache提供的衡量http伺服器效能的乙個簡單的小工具,用來對apache伺服器進行壓力測試,主要的衡量指標就是伺服器每秒能夠處理請求的數目,同時支援併發請求。下面舉個例子來分析ab 執行...

乙個簡單css例子

lang en charset utf 8 css講解title rel stylesheet href style.css body div dd xddaa hover abc ulli first child ulli last child ulli nth child 3 ulli only...

乙個簡單的json例子

名稱 年齡郵箱 response.setcontenttype text html charset utf 8 response.setheader cache control no cache jsonobject json new jsonobject try json.put jobs mem...