Link的 async 與defer

asyncdefer 是 HTML 中用於加載外部 JavaScript 檔案時的兩種不同屬性,它們影響著腳本的加載和執行方式。讓我為您解釋這兩者的差異:

async

  • 當使用 async:當瀏覽器遇到 <script async src="..."></script> 標籤,它會在背景中非阻塞方式加載腳本。這意味著 HTML 的解析過程不會因為腳本的加載而停止。
  • 腳本加載完畢後:一旦腳本加載完畢,HTML 的解析將會暫停,腳本隨即執行。
  • 主要用途async 適用於那些不依賴於其他腳本或者頁面的其餘部分的腳本,例如計數器或廣告。

defer

  • 當使用 defer:與 async 類似,<script defer src="..."></script> 也允許瀏覽器在背景中加載腳本,同時不會阻塞 HTML 的解析。
  • 不同之處defer 腳本會在整個頁面解析完畢後才執行,確保在執行腳本之前,所有的 HTML 都已加載完成。
  • 主要用途defer 適用於那些需要在文檔解析後運行的腳本,或者依賴於文檔其他部分的腳本,如操作 DOM 的腳本。

總結

  • asyncdefer 都是為了提高網頁的加載效率而設計的。它們允許瀏覽器並行加載腳本,同時不會影響 HTML 內容的解析。
  • 關鍵區別在於它們執行腳本的時機:async 是一旦腳本加載完畢立即執行,而 defer 則是等到整個頁面解析完畢後才執行。