原文地址:Best Practices on JavaScript and AJAX Performance
同類閱讀: dynaTrace之一 —— 網絡請求和往返的最佳實踐
dynaTrace AJAX Edition有獨一無二跟蹤頁面JS執行的能力。它還能跟蹤到瀏覽器的DOM,獲取方法的參數和返回值。下圖就是一個腳本異常的JS跟蹤圖,在PurePath視圖中:
通過JS這個級別的執行細節,很容易識別運行緩慢的js處理程序、自定義js代碼、低效的訪問DOM,代價昂貴又低效的第三方框架比如jQuery==。
標記阻塞的腳本和長時間運行的腳本
當腳本開始下載,然後瀏覽器執行,瀏覽器通常會停止所有其他下載。這個行爲很容易從newwork視圖看出來:
The dynaTrace AJAX Edition 時間軸視圖顯示了這個期間發生的詳情:
延遲加載JS文件
頁面應該儘量快地下載所有的資源以提高第一印象時間和加載時間。谷歌和雅虎建議JS置底。Google’s Best Practices谷歌的最佳實踐描述了在onLoad事件處理程序動態添加腳本標籤的JavaScript的DOM延遲加載。
優化JavaScript執行
除了又換js的加載順序,js代碼本身的效率就可以提高。dynaTrace AJAX Edition 提供了兩種視圖來分析js執行:
JavaScript/AJAX面板有點類似於Hotspot面板,分析頁面內所有的js執行,並提供彙總清單,顯示所有方法的性能。列表以腳本塊分行和外部如jQuery庫的調用。這個列表給出了改進性能的良好出發點。其中Back Trace顯示了誰引發了所選的活動,而Forward Trace顯示了這個活動出發了哪些其他的活動。點擊Back Trace或 Forward Trace中樹的節點,會在最下面顯示相關的js源代碼:
另一個有趣的視圖是PurePath視圖。它顯示了所有瀏覽器的活動,包括Script標籤或時間句柄出發了哪些js的執行,還有網絡請求和呈現的時間。TimeLine視圖下雙擊腳本執行塊或者從HotSpot視圖的方法進入PurePath視圖,顯示了具體路徑:
低效的css選擇器:具體細節參考《jQuery提升性能的代碼規範》
太多的XHR請求:使用jQuery的很容易依賴AJAX從服務器獲取額外的內容
一個典型的例子是