性能分析。。。前端
window.performance.timing中相關屬性語義:緩存
// .navigationStart 準備加載頁面的起始時間 // .unloadEventStart 若是前一個文檔和當前文檔同源,返回前一個文檔開始unload的時間 // .unloadEventEnd 若是前一個文檔和當前文檔同源,返回前一個文檔開始unload結束的時間 // .redirectStart 若是有重定向,這裏是重定向開始的時間. // .redirectEnd 若是有重定向,這裏是重定向結束的時間. // .fetchStart 開始檢查緩存或開始獲取資源的時間 // .domainLookupStart 開始進行dns查詢的時間 // .domainLookupEnd dns查詢結束的時間 // .connectStart 開始創建鏈接請求資源的時間 // .connectEnd 創建鏈接成功的時間. // .secureConnectionStart 若是是https請求.返回ssl握手的時間 // .requestStart 開始請求文檔時間(包括從服務器,本地緩存請求) // .responseStart 接收到第一個字節的時間 // .responseEnd 接收到最後一個字節的時間. // .domLoading ‘current document readiness’ 設置爲 loading的時間 (這個時候還木有開始解析文檔) // .domInteractive 文檔解析結束的時間 // .domContentLoadedEventStart DOMContentLoaded事件開始的時間 // .domContentLoadedEventEnd DOMContentLoaded事件結束的時間 // .domComplete current document readiness被設置 complete的時間 // .loadEventStart 觸發onload事件的時間 // .loadEventEnd onload事件結束的時間
1.主要性能分析指標服務器
通常指標:dom
// DNS查詢耗時 = domainLookupEnd - domainLookupStart // TCP連接耗時 = connectEnd - connectStart // request請求耗時 = responseEnd - responseStart // 解析dom樹耗時 = domComplete - domInteractive // 白屏時間 = domloadng - fetchStart // domready時間 = domContentLoadedEventEnd - fetchStart // onload時間 = loadEventEnd - fetchStart
實際前端更關注的指標(須要在實際中結合自身代碼):性能
console.log('首屏圖片加載完成 : ',window.lastImgLoadTime - window.performance.timing.navigationStart); //在最後一張圖出來的時候打時間點 console.log('HTML加載完成 : ',window.loadHtmlTime - window.performance.timing.navigationStart);//在HTML後打時間點 console.log('首屏接口完成加載完成 : ',Report.SPEED.MAINCGI - window.performance.timing.navigationStart);//在首屏的接口打時間點 console.log('接口完成加載完成 : ',Report.SPEED.LASTCGI - window.performance.timing.navigationStart);//在全部接口打時間點
實際輸出:fetch