轉(zhuǎn)載于:https://www.cnblogs.com/chenjg/p/7126822.html
? ? ? ? ? ? ? ? ? ? https://blog.csdn.net/bg70pvnybv1/article/details/78819711
js執(zhí)行會(huì)阻塞DOM樹的解析和渲染、
那么css加載會(huì)阻塞DOM樹的解析和渲染嗎?
結(jié)論:
1、css加載不會(huì)阻塞DOM樹的解析
2、css加載會(huì)阻塞DOM樹的渲染
3甥桂、css加載會(huì)阻塞后面js語句的執(zhí)行、
因此邮旷,為了避免讓用戶看到長(zhǎng)時(shí)間的白屏?xí)r間黄选,我們應(yīng)該盡可能的提高css加載速度,比如可以使用以下幾種方法:
使用CDN(因?yàn)镃DN會(huì)根據(jù)你的網(wǎng)絡(luò)狀況廊移,替你挑選最近的一個(gè)具有緩存內(nèi)容的節(jié)點(diǎn)為你提供資源糕簿,因此可以減少加載時(shí)間)
對(duì)css進(jìn)行壓縮(可以用很多打包工具,比如webpack,gulp等狡孔,也可以通過開啟gzip壓縮)
合理的使用緩存(設(shè)置cache-control,expires,以及E-tag都是不錯(cuò)的,不過要注意一個(gè)問題蜂嗽,就是文件更新后苗膝,你要避免緩存而帶來的影響。其中一個(gè)解決防范是在文件名字后面加一個(gè)版本號(hào))
減少http請(qǐng)求數(shù)植旧,將多個(gè)css文件合并辱揭,或者是干脆直接寫成內(nèi)聯(lián)樣式(內(nèi)聯(lián)樣式的一個(gè)缺點(diǎn)就是不能緩存)
注:js是如何阻塞DOM樹的解析和渲染的?
· 如果async為true病附,那么腳本在下載完成后異步執(zhí)行问窃。
· 如果async為false,defer為true完沪,那么腳本會(huì)在頁面解析完畢之后執(zhí)行域庇。
· 如果async和defer都為false嵌戈,那么腳本會(huì)在頁面解析中,停止頁面解析听皿,立刻下載并且執(zhí)行熟呛,