亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

無阻塞加載腳本分析[全]

 更新時間:2011年01月20日 22:49:37   作者:  
script標簽的阻塞行為會對頁面性能產(chǎn)生負面影響,大多數(shù)瀏覽器在下載或執(zhí)行腳本的同時,會阻塞下載位于它之后的資源,也會阻塞渲染位于它之后的元素。
由于瀏覽器是單線程的,因此腳本在載的時候會阻塞下載其它資源;雖然在現(xiàn)在瀏覽器已經(jīng)有所改善,但仍然有待改進。
很顯然,腳本必須按順序執(zhí)行,但沒有必要按順序下載,解決方法:
1。內(nèi)嵌JS
通常由于頁面大小和緩存能帶來更多好處,因此外部文件引入JS更好一些;
在少數(shù)情況下,比如首頁、少量JS情況下尚可接受。
2。XHR Eval
通過XMLHttpRequest從服務器端獲取腳本。
主要缺陷是,通過XHR獲取的腳本必須部署在和主頁面相同的域中。
復制代碼 代碼如下:

Ajax.get("test.js", function (xhr) {
eval(xhr.responseText);
});

3。XHR注入
使用XHR獲取腳本并創(chuàng)建script標簽。
同樣,通過XHR獲取的腳本必須部署在和主頁面相同的域中。
復制代碼 代碼如下:

Ajax.get('test.js', function (xhr) {
injectscript(xhr.responseText);
});
function injectscript(scriptText) {
var s = document.createElement('script');
s.text = scriptText;
document.getElementsByTagName('head')[0].appendChild(s);
}

4。Script in Iframe
將需要的腳本放入到一個頁面中,然后通過iframe來加載該頁面。
缺點是iframe本身的開銷比較大,另外瀏覽器安全機制不允許iframe中的js訪問跨域的父頁面,反之亦然。
5。Script DOM Element
JS動態(tài)創(chuàng)建script DOM元素并設置其src屬性。
復制代碼 代碼如下:

var scriptElem = document.createElement('script');
scriptElem.src = 'http://domain.com/test.js';
document.ge('head')[0].appendChild(scriptElem);

6。Script Defer
給script標簽添加defer屬性。
缺點是只有IE和一些新瀏覽器支持。
復制代碼 代碼如下:

<script defer src='test.js'></script>

7。document.write Script Tag
使用document.write把HTML標簽script寫入頁面。
缺點是只有在IE中是并行加載腳本的。
復制代碼 代碼如下:

document.write("<script type='text/javascript' src='test.js'><\/script>");

有一個大家不曾廣泛討論的不同點是對于瀏覽器忙碌狀態(tài)的影響,包括瀏覽器的狀態(tài)欄、進度條、Tab圖標以及鼠標。
當你加載多個彼此間有依賴關(guān)系的腳本時,還需要一種能夠保證執(zhí)行順序的技術(shù)。

技術(shù) 

 

并行下載 

 

可以跨域 

 

存在Script標簽 

 

忙碌指示 

順序保證 

大小 (bytes)

XHR Eval

IE, FF, Saf, Chr, Op

no

no

Saf, Chr

-

~500

XHR Injection

IE, FF, Saf, Chr, Op

no

yes

Saf, Chr

-

~500

Script in Iframe

IE, FF, Saf, Chr, Op

no

no

IE, FF, Saf, Chr

-

~50

Script DOM Element

IE, FF, Saf, Chr, Op

yes

yes

FF, Saf, Chr

FF, Op

~200

Script Defer

IE, Saf4, Chr2, FF3.1

yes

yes

IE, FF, Saf, Chr, Op

IE, FF, Saf, Chr, Op

~50

document.write Script Tag

IE, Saf4, Chr2, Op

yes

yes

IE, FF, Saf, Chr, Op

IE, FF, Saf, Chr, Op

~100

在大多數(shù)情況下,Script DOM Element是一個好的選擇。這種方式適用于所有的瀏覽器,而且沒有跨域的限制,實現(xiàn)起來也非常的簡單和易于理解。唯一的缺點是不能保證各個腳本的執(zhí)行順序。如果需要加載多個有依賴關(guān)系的腳本,應該將這些腳本拼成一個來保證其按需要的順序執(zhí)行,或者使用別的技術(shù)。
目前異步加載時保持執(zhí)行順序的方法有下面幾種,由于篇幅原因,暫不詳細描述。
單個腳本
1、Hardcoded Callback
2、Window Onload
3、Timer
4、Script Onload
5、Degrading Script Tags
多個腳本
1、Managed XHR
2、DOM Element and Doc Write
本文參考《高性能網(wǎng)站建設進階指南》
您可能感興趣的文章:

相關(guān)文章

  • JavaScript運算符小結(jié)

    JavaScript運算符小結(jié)

    本文主要給大家詳細總結(jié)了下javascript中的運算符,包括常見的算數(shù)運算符、比較運算符和邏輯運算符。十分的清晰,有需要的小伙伴可以參考下。
    2015-06-06
  • 微信小程序?qū)崿F(xiàn)簽到功能

    微信小程序?qū)崿F(xiàn)簽到功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • PWA介紹及快速上手搭建一個PWA應用的方法

    PWA介紹及快速上手搭建一個PWA應用的方法

    這篇文章主要介紹了PWA介紹及快速上手搭建一個PWA應用的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • WebGL?繪制與變換使用示例詳解

    WebGL?繪制與變換使用示例詳解

    這篇文章主要為大家介紹了WebGL?繪制與變換使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • javascript suggest效果 自動完成實現(xiàn)代碼分享

    javascript suggest效果 自動完成實現(xiàn)代碼分享

    像百度與google,當我們往搜索框輸入東西時就會出現(xiàn)一排列表提示用戶有什么熱門或適合的候選詞,這種效果就叫suggest。本文將一步步教你如何設計它
    2012-02-02
  • JavaScript數(shù)據(jù)結(jié)構(gòu)之數(shù)組的表示方法示例

    JavaScript數(shù)據(jù)結(jié)構(gòu)之數(shù)組的表示方法示例

    這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之數(shù)組的表示方法,從數(shù)據(jù)結(jié)構(gòu)線性表的角度分析了數(shù)組的原理并結(jié)合實例形式分析了javascript數(shù)組的定義與使用方法,需要的朋友可以參考下
    2017-04-04
  • 詳解使用Nuxt.js快速搭建服務端渲染(SSR)應用

    詳解使用Nuxt.js快速搭建服務端渲染(SSR)應用

    這篇文章主要介紹了詳解使用Nuxt.js快速搭建服務端渲染(SSR)應用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 詳解BootStrap表單驗證中重置BootStrap-select驗證提示不清除的坑

    詳解BootStrap表單驗證中重置BootStrap-select驗證提示不清除的坑

    這篇文章主要介紹了詳解BootStrap表單驗證中重置BootStrap-select驗證提示不清除的坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 微信小程序開發(fā)之選項卡(窗口底部TabBar)頁面切換

    微信小程序開發(fā)之選項卡(窗口底部TabBar)頁面切換

    本文主要介紹了微信小程序開發(fā)之選項卡(窗口底部TabBar)頁面切換的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • JavaScript類的繼承全面示例講解

    JavaScript類的繼承全面示例講解

    在 ES5 中,類的繼承可以有多種方式,然而過多的選擇有時反而會成為障礙,ES6 統(tǒng)了類繼承的寫法,避免開發(fā)者在不同寫法的細節(jié)之中過多糾纏,但在介紹新方法之前,還是有必要先回顧下ES5中類的繼承方式
    2022-08-08

最新評論