CSS阻塞DOM渲染
無論是外鏈CSS還是內(nèi)聯(lián)CSS都會阻塞DOM渲染(Rendering)回还,然而DOM解析(Parsing)會正常進行坷备。
這意味著在CSS下載并解析結(jié)束之前益楼,它后面的HTML都不會顯示。 這也是為什么我們把樣式放在HTML內(nèi)容之前寻行,以防止被呈現(xiàn)內(nèi)容發(fā)生樣式跳動霍掺。 當然代價就是顯示延遲,所以性能攸關的站點都會內(nèi)聯(lián)所有CSS拌蜘。
然而杆烁,很多瀏覽器中CSS還會延遲腳本執(zhí)行和DOMContentLoaded事件觸發(fā)(該事件就是jQuery的dom ready)
JS阻塞DOM渲染
不論是內(nèi)聯(lián)還是外鏈JavaScript都會阻塞后續(xù)DOM解析(Parsing),當然后續(xù)DOM的渲染(Rendering)也被阻塞了简卧。
之所以DOM解析(Parsing)需要暫停兔魂, 是因為腳本中可能會包含類似document.write的語句,即腳本有可能改變當前DOM樹举娩。
當然現(xiàn)代瀏覽器不會這么傻析校,可以推測式地繼續(xù)解析以提高性能构罗。當然這些優(yōu)化不應改變DOM應有的行為。
值得注意的是JavaScript只會阻塞后續(xù)的DOM而非整個DOM智玻,這意味著前面的DOM可以被正確地解析以及渲染遂唧。 這也是為什么我們把腳本放在頁面底部:腳本仍在下載時頁面已經(jīng)可以正常地顯示了