最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript 加載和執(zhí)行-性能提高篇

 更新時(shí)間:2012年12月28日 10:19:19   作者:  
Javascript 在瀏覽器中的性能問題,可能是最重要的可用性問題;Js的阻塞性 瀏覽器用單一進(jìn)程來處理UI進(jìn)程和Js的執(zhí)行;不管是內(nèi)嵌的還是外鏈的,下載并立即執(zhí)行 因?yàn)樗锌赡軙?huì)修改頁面
Js的阻塞性
Javascript 在瀏覽器中的性能問題,可能是最重要的可用性問題
Js的阻塞性 瀏覽器用單一進(jìn)程來處理UI進(jìn)程和Js的執(zhí)行
不管是內(nèi)嵌的還是外鏈的,下載并立即執(zhí)行 因?yàn)樗锌赡軙?huì)修改頁面

頁面生存周期的概念
瀑布圖中看到了下載時(shí)間和executing time
在head中加入script 和link body加載到前不會(huì)輸出任何東西,因此會(huì)看到空白頁面
復(fù)制代碼 代碼如下:

<script type="text/javascript">
document.write("The date is" + (new Date().toDateString()));
</script>

頁面在到script時(shí),不知道script里會(huì)做什么,所以必然阻塞,等它執(zhí)行
Ie8 等瀏覽器能并行下載多個(gè)js等資源,但是還是對(duì)下載圖片有影響
結(jié)論, 將腳本放在底部加載

組織腳本
目標(biāo) 最小化遲延時(shí)間
問題
引用多個(gè)script文件 內(nèi)嵌多個(gè)script標(biāo)簽
每個(gè)http請(qǐng)求都會(huì)帶來性能上的開銷
緊跟在link 后的script 是個(gè)錯(cuò)誤 它會(huì)等待css的加載,以求獲得最精準(zhǔn)的描繪
結(jié)論:減少script標(biāo)簽的數(shù)量
將多個(gè)js文件合并成一個(gè),打包工具
yahoo的合并處理器

無阻塞的腳本
js傾向于阻止瀏覽器的某些處理過程,如http請(qǐng)求處理和界面更新.這是最重要的性能問題。于是要減少js文件大小和限制http請(qǐng)求數(shù)
但是功能豐富與代碼量之間的矛盾, 合并成單個(gè)文件卻體積大會(huì)鎖死瀏覽器一大段時(shí)間,于是我們需要逐步加載javascript文件
重點(diǎn):在頁面加載完成后加載javascript文件

1、延遲加載腳本
defer 屬性
如果要下載的js文件不會(huì)進(jìn)行dom操作,那么defer屬性有很大的用處,它能讓文件并行下載,并不會(huì)立即執(zhí)行,而會(huì)在onload事件后再執(zhí)行,適用于任何script標(biāo)簽
2、動(dòng)態(tài)加載腳本
一個(gè)function
復(fù)制代碼 代碼如下:

function loadScript(url,callback){
var script = document.createElement('script');
script.type = 'text/javascript';
if(script.readyState) { //IE
script.onreadyStatechange = function(){
    if(script.readyState == 'loaded' || script.readyState == 'complete') {
script.onreadyStatechange = null;
     callback();
}
} else {
script.onload = function(){
callback();
}
}
}

這里要注意瀏覽器的兼容性,刪除事件,
如果有多個(gè)文件需要這樣加載,那么可以
復(fù)制代碼 代碼如下:

loadScript('file1.js', function(){
loadScript('file2.js',function(){
})
});

3、XHR腳本注入
復(fù)制代碼 代碼如下:

var xhr = new XMLHttpRequest();
xhr.open('get','file1.js',true);
xhr.onreadystatechange= function(){
  if(xhr.readyState == 4) {
    if(xhr.status >= 200 && xhr.status <=300 || xhr.status==304) {
var oScript = document.createElement('script');
     oScript.text = xhr.responseText;
     document.body.appendChild(oScript);
}
}
}

304表示從緩存取 text將ajax的內(nèi)容放入text

它的優(yōu)點(diǎn)
兼容性好,異步, 缺點(diǎn):不能擴(kuò)域 不能從cdn取內(nèi)容

相關(guān)文章

  • 基于微信小程序?qū)崿F(xiàn)透明背景人像分割功能

    基于微信小程序?qū)崿F(xiàn)透明背景人像分割功能

    這篇文章主要介紹了基于小程序?qū)崿F(xiàn)透明背景人像分割,此文主要實(shí)現(xiàn)識(shí)別人體的輪廓范圍,與背景進(jìn)行分離并保存效果圖,適用于拍照背景替換及透明背景的人像圖(png格式)轉(zhuǎn)換,需要的朋友可以參考下
    2022-10-10
  • 微信小程序抽獎(jiǎng)組件的使用步驟

    微信小程序抽獎(jiǎng)組件的使用步驟

    這篇文章主要給大家介紹了關(guān)于微信小程序抽獎(jiǎng)組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • JS閉包原理與應(yīng)用經(jīng)典示例

    JS閉包原理與應(yīng)用經(jīng)典示例

    這篇文章主要介紹了JS閉包原理與應(yīng)用,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascript閉包的原理、應(yīng)用及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • 淺談JS裝飾器以及裝飾器在TS中的使用方式

    淺談JS裝飾器以及裝飾器在TS中的使用方式

    這篇文章主要帶大家探討一下JS裝飾器以及裝飾器在TS中的使用方式,文中有詳細(xì)的代碼示例,對(duì)裝飾器不太了解的同學(xué)可以參考閱讀本文學(xué)習(xí)了一下
    2023-07-07
  • 微信小程序 點(diǎn)擊控件后選中其它反選實(shí)例詳解

    微信小程序 點(diǎn)擊控件后選中其它反選實(shí)例詳解

    這篇文章主要介紹了微信小程序 點(diǎn)擊控件后選中其它反選實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • weui框架實(shí)現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架實(shí)現(xiàn)上傳、預(yù)覽和刪除圖片功能代碼

    weui框架暫時(shí)只有css文件,并沒有js文件實(shí)現(xiàn)其功能,我在其html+css后面增加了js實(shí)現(xiàn)其功能,為大家提供方便,也為自己保存記錄。具體實(shí)例代碼大家參考下本文
    2017-08-08
  • 關(guān)于localStorage的存儲(chǔ),讀取,刪除

    關(guān)于localStorage的存儲(chǔ),讀取,刪除

    這篇文章主要介紹了關(guān)于localStorage的存儲(chǔ),讀取,刪除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 動(dòng)態(tài)加載js、css的實(shí)例代碼

    動(dòng)態(tài)加載js、css的實(shí)例代碼

    這篇文章主要介紹了動(dòng)態(tài)加載js、css的實(shí)例代碼的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看吧
    2016-05-05
  • JS實(shí)現(xiàn)的跨瀏覽器解析XML文件實(shí)例

    JS實(shí)現(xiàn)的跨瀏覽器解析XML文件實(shí)例

    這篇文章主要介紹了JS實(shí)現(xiàn)的跨瀏覽器解析XML文件的方法,結(jié)合實(shí)例形式分析了javascript基于ActiveXObject操作xml文件的加載與解析相關(guān)技巧,需要的朋友可以參考下
    2016-06-06
  • javascript簡(jiǎn)單實(shí)現(xiàn)等比例縮小圖片的方法

    javascript簡(jiǎn)單實(shí)現(xiàn)等比例縮小圖片的方法

    這篇文章主要介紹了javascript簡(jiǎn)單實(shí)現(xiàn)等比例縮小圖片的方法,涉及javascript針對(duì)頁面元素屬性的讀取、運(yùn)算及設(shè)置相關(guān)技巧,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

鄄城县| 平江县| 吴桥县| 固镇县| 永福县| 江川县| 万源市| 江川县| 吴桥县| 汉川市| 滦平县| 滨海县| 陆丰市| 婺源县| 封丘县| 来凤县| 凉山| 涡阳县| 青海省| 邯郸市| 濮阳县| 安岳县| 曲靖市| 岐山县| 宿迁市| 清河县| 永济市| 吴堡县| 剑阁县| 桦南县| 台南县| 玛沁县| 泰顺县| 天水市| 通城县| 达拉特旗| 西丰县| 泽库县| 宣武区| 武陟县| 望谟县|