前端工程師-高級(jí)WEB網(wǎng)站前端開(kāi)發(fā)加載JavaScript指南_第1頁(yè)
前端工程師-高級(jí)WEB網(wǎng)站前端開(kāi)發(fā)加載JavaScript指南_第2頁(yè)
前端工程師-高級(jí)WEB網(wǎng)站前端開(kāi)發(fā)加載JavaScript指南_第3頁(yè)
前端工程師-高級(jí)WEB網(wǎng)站前端開(kāi)發(fā)加載JavaScript指南_第4頁(yè)
前端工程師-高級(jí)WEB網(wǎng)站前端開(kāi)發(fā)加載JavaScript指南_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、所有瀏覽器在下載JS的時(shí)候,會(huì)阻止一切其他活動(dòng),比如其他資源的下載,內(nèi)容的呈現(xiàn)等等。至到JS下載、解析、執(zhí)行完畢后才開(kāi)始繼續(xù)并行下載其他資源并呈現(xiàn)內(nèi)容。為什么JS不能像CSS、image一樣并行下載了?AD: 外部JS的阻塞塞下載所有瀏覽器在下下載JS的時(shí)時(shí)候,會(huì)阻止止一切其他活活動(dòng),比如其其他資源的下下載,內(nèi)容的的呈現(xiàn)等等。至至到JS下載載、解析、執(zhí)執(zhí)行完畢后才才開(kāi)始繼續(xù)并并行下載其他他資源并呈現(xiàn)現(xiàn)內(nèi)容。有人會(huì)問(wèn):為什什么JS不能能像CSS、iimage一一樣并行下載載了?這里需需要簡(jiǎn)單介紹紹一下瀏覽器器構(gòu)造頁(yè)面的的原理,當(dāng)瀏覽器從服務(wù)務(wù)器接收到了了HTML文文檔,并把HHTML在內(nèi)內(nèi)存中轉(zhuǎn)

2、換成成DOM樹(shù),在在轉(zhuǎn)換的過(guò)程程中如果發(fā)現(xiàn)現(xiàn)某個(gè)節(jié)點(diǎn)(node)上引用了CCSS或者IIMAGE,就就會(huì)再發(fā)1個(gè)個(gè)requeest去請(qǐng)求求CSS或iimage,然后繼續(xù)執(zhí)執(zhí)行下面的轉(zhuǎn)轉(zhuǎn)換,而不需需要等待reequestt的返回,當(dāng)當(dāng)requeest返回后后,只需要把把返回的內(nèi)容容放入到DOOM樹(shù)中對(duì)應(yīng)應(yīng)的位置就OOK。但當(dāng)引引用了JS的的時(shí)候,瀏覽覽器發(fā)送1個(gè)個(gè)js reequestt就會(huì)一直等等待該reqquest的的返回。因?yàn)闉闉g覽器需要要1個(gè)穩(wěn)定的的DOM樹(shù)結(jié)結(jié)構(gòu),而JSS中很有可能能有代碼直接接改變了DOOM樹(shù)結(jié)構(gòu),比比如使用doocumennt.wriite 或 appenndChi

3、lld,甚至是是直接使用的的locattion.hhref進(jìn)行行跳轉(zhuǎn),瀏覽覽器為了防止止出現(xiàn)JS修修改DOM樹(shù)樹(shù),需要重新新構(gòu)建DOMM樹(shù)的情況,所所以就會(huì)阻塞塞其他的下載載和呈現(xiàn).阻塞下載圖:下下圖是訪問(wèn)bblogjaava首頁(yè)的的時(shí)間瀑布圖圖,可以看出出來(lái)開(kāi)始的22個(gè)imagge都是并行行下載的,而而后面的2個(gè)個(gè)JS都是阻阻塞下載的(1個(gè)1個(gè)下下載)。嵌入JS的阻塞塞下載嵌入JS是指直直接寫(xiě)在HTTML文檔中中的JS代碼碼。上面說(shuō)了了引用外部的的JS會(huì)阻塞塞其后的資源源下載和其后后的內(nèi)容呈現(xiàn)現(xiàn),哪嵌入的的JS又會(huì)是是怎樣阻塞的的了,看下面面的列2個(gè)代代碼:代碼1:div ul libllo

4、gjavvaspannstylle=coolor:#8000000;li liCSSDNspaanstyyle=ccolor:#8000000;li li博客客園spannstylle=coolor:#8000000;li liABBCspannstylle=coolor:#8000000;li liAAAAspannstylle=coolor:#8000000;li ul spaanstyyle=ccolor:#8000000;div scrriptttype=text/javasscriptt /循環(huán)5秒鐘 varn=Nummber(nnewDaate(); varrn2=Numbber(

5、neewDatte(); whille(n22-n)(6*1000) n2=Numbeer(newwDatee(); spaanstyyle=ccolor:#8000000;scriipt div ul liMSSNspannstylle=coolor:#8000000;li liGOOOGLEsspansstyle=coloor:#88000000;lii liYAAHOOsppansttyle=colorr:#8000000;li ul spaanstyyle=ccolor:#8000000;div 代碼2(tesst.zipp里面的代碼碼與代碼1的的JS代碼一一模一樣):div ul l

6、ibllogjavvaspannstylle=coolor:#8000000;li liCSSDNspaanstyyle=ccolor:#8000000;li li博客客園spannstylle=coolor:#8000000;li liABBCspannstylle=coolor:#8000000;li liAAAAspannstylle=coolor:#8000000;li ul spaanstyyle=ccolor:#8000000;div scrriptttype=text/javasscripttsrcc=htttp:/t/Filees/BeaarRui/test.zipspanst

7、yle=colorr:#8000000;scrript div ul liMSSNspannstylle=coolor:#8000000;li liGOOOGLEsspansstyle=coloor:#88000000;lii liYAAHOOsppansttyle=colorr:#8000000;li ul spaanstyyle=ccolor:#8000000;div運(yùn)行后,會(huì)發(fā)現(xiàn)現(xiàn)代碼1中,在在前5秒中頁(yè)頁(yè)面上是一篇篇空白,5秒秒中后頁(yè)面全全部顯示。 代碼2中,前前5秒中bllogjavva,csddn等先顯示示出來(lái),5秒秒后MSN才才顯示出來(lái)。可以看出嵌入JJS會(huì)阻塞所所有內(nèi)容的呈呈現(xiàn)

8、,而外部部JS只會(huì)阻阻塞其后內(nèi)容容的顯示,22種方式都會(huì)會(huì)阻塞其后資資源的下載。嵌入JS導(dǎo)致CCSS阻塞加加載的問(wèn)題CSS怎么會(huì)阻阻塞加載了?CSS本來(lái)來(lái)是可以并行行下載的,在在什么情況下下會(huì)出現(xiàn)阻塞塞加載了(在在測(cè)試觀察中中,IE6下下CSS都是是阻塞加載,下下面的測(cè)試在在非IE6下下進(jìn)行):代碼1(為了效效果,這里選選擇了1個(gè)國(guó)國(guó)外服務(wù)器的的CSS):htmlxmmlns=http:/wwww.w3.oorg/19999/xhhtml head ttitlejsteestspaanstyyle=ccolor:#8000000;titlle mmetahhttp-eequiv=Contten

9、t-TTypeconteent=ttext/hhtml;charsset=UTTF-8/ linnktyppe=teext/csssreel=sttyleshheethref=httpp:/699.64.992.2055/Css/Home33.css/ spanstylee=collor:#8000000;hhead body iimgsrrc=htttp:/www.bblogjaava.neet/imaages/llogo.ggif/bbr/ iimgsrrc=htttp:/n/www/imagees/csddnindeex_picclogo.gif/ spanstylee=collor:#

10、8000000;bbody spanstylee=collor:#8000000;hhtml時(shí)間瀑布圖:代碼2(只加了了1個(gè)空的嵌嵌入JS):head tittlejsstesttspanstylee=collor:#8000000;ttitle mettahtttp-equuiv=CContennt-Typpecoontentt=texxt/htmml;chharsett=UTF-8/ linktype=textt/cssrel=styllesheeethrref=hhttp:/69.664.92.205/CCss/Hoome3.ccss/ scrippttyppe=teext/jaavas

11、crript funcctiona() spanstylee=collor:#8000000;sscriptt spaanstyyle=ccolor:#8000000;headd boddy imgsrc=http:/iimagess/logoo.gif/br/ imgsrc=http:/wwww/imaages/ccsdninndex_ppicloggo.giff/ spaanstyyle=ccolor:#8000000;bodyy時(shí)間瀑布圖:從時(shí)間瀑布圖中中可以看出,代代碼2中,CCSS和圖片片并沒(méi)有并行行下載,而是是等待CSSS下載完畢后后才去并行下下載后面的22個(gè)圖片,當(dāng)當(dāng)CSS后面面

12、跟著嵌入的的JS的時(shí)候候,該CSSS就會(huì)出現(xiàn)阻阻塞后面資源源下載的情況況。有人可能會(huì)問(wèn),這這里為什么不不說(shuō)說(shuō)嵌入的的JS阻塞了了后面的資源源,而是說(shuō)CCSS阻塞了了? 想想我我們現(xiàn)在用的的是1個(gè)空函函數(shù),解析這這個(gè)空函數(shù)11ms就夠,而而后面2個(gè)圖圖片是等CSSS下載完11.3s后才才開(kāi)始下載。大大家還可以試試試把嵌入JJS放到CSSS前面,就就不會(huì)出現(xiàn)阻阻塞的情況了了。根本原因:因?yàn)闉闉g覽器會(huì)維維持htmll中css和和js的順序序,樣式表必必須在嵌入的的JS執(zhí)行前前先加載、解解析完。而嵌嵌入的JS會(huì)會(huì)阻塞后面的的資源加載,所所以就會(huì)出現(xiàn)現(xiàn)上面CSSS阻塞下載的的情況。嵌入JS應(yīng)該放放在什么位置置1、放在底部,雖雖然放在底部部照樣會(huì)阻塞塞所有呈現(xiàn),但但不會(huì)阻塞資資源下載。2、如果嵌

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論