作為一名網(wǎng)站開發(fā)WEB前端工程師,對自己開發(fā)的網(wǎng)站項目應(yīng)該盡可能地對其性能進行優(yōu)化,現(xiàn)在互聯(lián)網(wǎng)上搜索到的網(wǎng)站性能優(yōu)化多是翻譯轉(zhuǎn)載自Yahoo14條或34條。Yahoo的優(yōu)化建議關(guān)注在大的方面,下面,W3C Group為大家呈現(xiàn)WEB前端開發(fā)高性能優(yōu)化部分之JavaScript的優(yōu)化細節(jié)!
一、避免出現(xiàn)腳本失控
不論什么腳本,在任何時間、任何瀏覽器上執(zhí)行,都不應(yīng)該超過100毫秒。如果實際執(zhí)行的時間長于這個底限,一定要將進程分解成若干更小的代碼段。
腳本失控基本上有以下四個方面的原因:
1. 在循環(huán)中執(zhí)行了太多的操作
解決這個問題的訣竅就是用下面這兩個問題來評估每個循環(huán):
- 這個循環(huán)必須要同步執(zhí)行么?
- 循環(huán)里面的數(shù)據(jù),必須要按順序執(zhí)行么?
如果1和2都可以否定,那么建議使用setTimeout方式將循環(huán)體切分成小塊進行異步處理
將循環(huán)中的定義變量及初始化操作放到循環(huán)外。參見:http://www.w3cgroup.com/article.asp?id=111
2. 臃腫的函數(shù)體
在JavaScript中,我們應(yīng)該盡可能的用局部變量來代替全局變量!
理解JavaScript作用域鏈。參見:http://www.jslab.org.cn/?tag=ScopeChainAndClosure
理解原型鏈。參見:http://www.jslab.org.cn/?tag=prototypeChain
3. 過多的遞歸
使用迭代方式替代遞歸,采用memoization技術(shù)優(yōu)化遞歸
斐波那契數(shù)列的遞歸算法優(yōu)化,參見:http://www.jslab.org.cn/?tag=Memoization
出處:W3C標(biāo)準(zhǔn)WEB前端DHTML精英俱樂部
責(zé)任編輯:bluehearts
上一頁 下一頁 JavaScript優(yōu)化細節(jié) [2]
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|