提高JavaScript性能

加載並執行


1.</body>閉合標籤之前,將所有的<script>標籤放到頁面底部。這能確保在腳本執行前頁面已經渲染完成


2.每個<script>標籤初始下載是都會阻塞頁面渲染,應減少頁面包含的<script>標籤(打包壓縮)


3.把一段內嵌腳本放在引用外鏈樣式表的<link>標籤之後會導致頁面阻塞去等待樣式表的下載,這樣做是爲了確保內嵌腳本在執行時能獲得最精確的樣式信息,因此不要把內嵌腳本緊跟在<link>標籤之後


4. 使用多種無阻塞下載JavaScript的方法
- 使用<script>標籤的defer屬性
- 使用動態創建的<script>元素來下載並執行代碼
- 使用XHR對象下載JavaScript代碼並注入頁面中




數據存儲

1.如果某個跨作用域的值在函數中被應用一次以上,那麼就把他存儲到局部變量( var doc = documeng; doc.xxxx )


2.點表示法(object.name)比括號表示(object['name'])法在Safari中速度更快


3.屬性或者方法在原型鏈中的位置越深,訪問的速度越慢


4.嵌套的對象成員會明顯影響性能


5.少用全局變量,因爲它總處於作用域鏈的最末端




DOM編程 (DOM是一個獨立於語言的沒用於操作XML和HTML文檔的程序接口API,所以DOM操作天生就慢)


1.減少DOM訪問的次數,把運算儘量留在ECMAScript這一端處理。


2.如果需要多次訪問某個DOM節點,請使用局部變量存儲他的引用


3.處理HTML集合時,把集合的長度緩存到一個變量中,並在迭代中使用它。如果經常需要操作集合,把集合拷貝到一個數組中(toArray)


4.使用事件委託來減少事件處理器的數量


5.使用動畫時,讓元素脫離文檔流(比如 展開/摺疊 先讓元素絕對定位,完成時候恢復定位)




算法和流程控制


1.不要用for-in來遍歷數組成員




快速響應的用戶界面


1.高效的管理UI線程就是要確保javas不能運行太長時間


2.任何JavaScript任務都不應當執行超過100ms


3.JavaScript運行期間,瀏覽器響應用戶交互的行爲存在差異


4.處理純數據或者與瀏覽器UI無關的長時間運行腳本,可以嘗試Web Workers


Ajax

1.使用XHR時,GET請求的數據會被緩存起來,如果需要多次請求同一數據的話,它會有助於提升性能(長度:2048字節)




編程實踐

1.避免雙抽求值


2.使用Objcet/Array直接量


3.避免重複工作
- 延遲加載(複寫現有函數)
- 條件預加載(三元表達式)

4.使用速度快的部分
- 位操作
- 原生方法




構建並部署高性能JavaScript應用


1.合併多個JavaScript文件,減少HTTP請求


2.預處理JavaScript文件


3.壓縮JavaScript


4.緩存JavaScript文件(添加校驗和)


5.使用CDN
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章