同步加載、異步加載、延遲加載


一、同步加載
  平常默認用的都是同步加載。如:<script src="http://yourdomain.com/script.js"></script> 
  同步模式又稱阻塞模式,會阻止瀏覽器的后續處理,停止了后續的文件的解析,執行,如圖像的渲染。流覽器之所以會采用同步模式,是因為加載的js文件中有對dom的操作,重定向,輸出document等默認行為,所以同步才是最安全的。通常會把要加載的js放到body結束標簽之前,使得js可在頁面最后加載,盡量減少阻塞頁面的渲染。這樣可以先讓頁面顯示出來

二、異步加載

(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://yourdomain.com/script.js';
var x = document.getElementsByTagName('script')[0];
 x.parentNode.insertBefore(s, x);
})();

異步加載也叫非阻塞模式加載,瀏覽器在下載js的同時,同時還會執行后續的頁面處理。
在script標簽內,用js創建一個script元素並插入到document中,這種就是異步加載js文件了。

同步加載流程是瀑布模型,異步加載流程是並發模型。

三、延遲加載(lazy loading)

前面解決了異步加載(async loading)問題,再談談什么是延遲加載。
延遲加載:有些 js 代碼並不是頁面初始化的時候就立刻需要的,而稍后的某些情況才需要的。延遲加載就是一開始並不加載這些暫時不用的js,而是在需要的時候或稍后再通過js 的控制來異步加載。
也就是將 js 切分成許多模塊,頁面初始化時只加載需要立即執行的 js ,然后其它 js 的加載延遲到第一次需要用到的時候再加載。
特別是頁面有大量不同的模塊組成,很多可能暫時不用或根本就沒用到。
就像圖片的延遲加載,在圖片出現在可視區域內時(在滾動條下拉)才加載顯示圖片

四、預加載

預加載是一種瀏覽器機制,使用瀏覽器空閑時間來預先下載/加載用戶接下來很可能會瀏覽的頁面/資源,當用戶訪問某個預加載的鏈接時,如果從緩存命中,頁面就得以快速呈現。




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM