在頁面加載性能當(dāng)中,頁面被阻塞是影響頁面主要內(nèi)容(包括圖片等)及時呈現(xiàn)在用戶面前的一個重要因素之一,所以我們需要在頁面中合理處置外調(diào)CSS及JS文件。 提示:你可以先修改部分代碼再運(yùn)行。 有firebug的童鞋可以看到,頁面內(nèi)容及圖片等被head里面的外調(diào)script及css文件所阻塞,頁面加載耗時5.5S,如下圖 function loadScript(url, callback) { 以上代碼可以看出,我們是用一個js動態(tài)創(chuàng)建一個script標(biāo)簽,然后賦值src來進(jìn)行加載外部JS,同時提供一個回調(diào)函數(shù),以保證在腳本加載完畢才執(zhí)行的那些函數(shù)代碼可以正常運(yùn)行。 再看一下優(yōu)化后的頁面 提示:你可以先修改部分代碼再運(yùn)行。 再次用firebug可以看到圖片已經(jīng)沒有被腳本阻塞,與腳本是并行加載的,整個頁面加載時間也減少不少,頁面總耗時減少為2.9S,如下圖 但還是有問題,在loadScript與頁面內(nèi)容之間如果還有script標(biāo)簽的話,一樣會阻塞內(nèi)容下載,解決方案就是給loadScript加個setTimeout執(zhí)行,徹底將加載JS移出文檔加載流,實(shí)現(xiàn)異步加載,就不會再阻塞頁面其他內(nèi)容了,看如下完整代碼: |
|