https://segmentfault.com/a/1190000000490324
- 優(yōu)化循環(huán)
- 垃圾回收
*1锦援。 將不用的對(duì)象賦值為空猛蔽。(null)
*2. 全局對(duì)象 將一些常用對(duì)象永久保存起來(lái)。作為全局對(duì)象
*3. 事件監(jiān)聽(tīng)器的回收
*4. 定時(shí)器的回收灵寺。(干脆就放一個(gè)全局的定時(shí)器曼库,項(xiàng)目啟動(dòng)后就一直在跑)
*5. 閉包導(dǎo)致的內(nèi)存泄露 (閉包是不會(huì)造成內(nèi)存泄漏的。但是略板,閉包會(huì)造成對(duì)象引用的生命周期脫離當(dāng)前函數(shù)的上下文)(有待研究)
3.對(duì)象的優(yōu)化
*1. JavaScript獲取數(shù)據(jù)的性能有如下順序(從快到慢)
變量獲取 > 數(shù)組下標(biāo)獲然倏荨(對(duì)象的整數(shù)索引獲取) > 對(duì)象屬性獲榷3啤(對(duì)象非整數(shù)索引獲戎致辍)
*2. 對(duì)象的拷貝
for(item in source) 的效率非常低
4.對(duì)象池
5.線(xiàn)程
6.緩存
*1. http請(qǐng)求數(shù)據(jù)的緩存,避免同樣的數(shù)據(jù)重復(fù)去請(qǐng)求颅拦。
*2. 本地緩存 sessionStorage localStorage
*3. 應(yīng)用資源的緩存蒂誉。 Application Cache
<html manifest="manifest.appcache">
js文件的優(yōu)化
*1. 文件的壓縮
壓縮主要是刪除 JS 代碼中注釋教藻、換行符距帅、空格等,從而壓縮 JS 文件大小括堤。
工具打包之后基本上都經(jīng)過(guò)了壓縮碌秸。但是要注意代碼的規(guī)范。如果使用代碼混淆的話(huà)會(huì)將方法名和變量名賦值為a悄窃,b讥电,c這樣的一個(gè)單詞,會(huì)減少文件的長(zhǎng)度轧抗。我們現(xiàn)在用的工具一般只壓縮不混淆恩敌。如果要混淆需要自己找工具去處理
*2. 文件的合并 將多個(gè)js文件合并成一個(gè)文件。減少網(wǎng)絡(luò)請(qǐng)求的此時(shí)横媚。但是主要要是在同一模塊下的纠炮。
同樣的圖片和聲音也可以做這樣的合并處理。
Angular2 項(xiàng)目的優(yōu)化
Aot編譯灯蝴, 搖樹(shù)優(yōu)化 (treeshaking) 懶加載恢口。
--prod 代表生產(chǎn)環(huán)境編譯,帶有代碼混淆與壓縮功能穷躁。我這實(shí)際測(cè)試時(shí)候耕肩,默認(rèn)編譯包大小為3.5兆,生產(chǎn)包1.7兆。
--aot 代表預(yù)編譯猿诸,會(huì)顯著縮短客戶(hù)端瀏覽器的啟動(dòng)到展示出真正頁(yè)面的時(shí)間婚被。
緩存接口的數(shù)據(jù)。
轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
服務(wù)器的Gzip壓縮梳虽。
對(duì)象的賦值
對(duì)象引用賦值后摔寨,如果將對(duì)象置空,相互間是不受影響的怖辆。