用PerformanceTiming來檢測頁面性能

window.performance.timing下的屬性

navigationStart瀏覽器

當前瀏覽器窗口的前一個網頁關閉,發生unload事件時的Unix毫秒時間戳。若是沒有前一個網頁,則等於fetchStart屬性。緩存

unloadEventStart安全

若是前一個網頁與當前網頁屬於同一個域名,則返回前一個網頁的unload事件發生時的Unix毫秒時間戳。若是沒有前一個網頁,或者以前的網頁跳轉不是在同一個域名內,則返回值爲0;服務器

unloadEventEndapp

若是前一個網頁與當前網頁屬於同一個域名,則返回前一個網頁unload事件的回調函數結束時的Unix毫秒時間戳。若是沒有前一個網頁,或者以前的網頁跳轉不是在同一個域名內,則返回值爲0。dom

redirectStart函數

返回第一個HTTP跳轉開始時的Unix毫秒時間戳。若是沒有跳轉,或者不是同一個域名內部的跳轉,則返回值爲0。fetch

redirectEndurl

返回最後一個HTTP跳轉結束時(即跳轉回應的最後一個字節接受完成時)的Unix毫秒時間戳。若是沒有跳轉,或者不是同一個域名內部的跳轉,則返回值爲0。code

fetchStart

返回瀏覽器準備使用HTTP請求讀取文檔時的Unix毫秒時間戳。該事件在網頁查詢本地緩存以前發生。

domainLookupStart

返回域名查詢開始時的Unix毫秒時間戳。若是使用持久鏈接,或者信息是從本地緩存獲取的,則返回值等同於fetchStart屬性的值。

domainLookupEnd

回域名查詢結束時的Unix毫秒時間戳。若是使用持久鏈接,或者信息是從本地緩存獲取的,則返回值等同於fetchStart屬性的值。

connectStart

返回HTTP請求開始向服務器發送時的Unix毫秒時間戳。若是使用持久鏈接(persistent connection),則返回值等同於fetchStart屬性的值。

connectEnd

返回瀏覽器與服務器之間的鏈接創建時的Unix毫秒時間戳。若是創建的是持久鏈接,則返回值等同於fetchStart屬性的值。鏈接創建指的是全部握手和認證過程所有結束

secureConnectionStart

返回瀏覽器與服務器開始安全連接的握手時的Unix毫秒時間戳。若是當前網頁不要求安全鏈接,則返回0。

requestStart

返回瀏覽器向服務器發出HTTP請求時(或開始讀取本地緩存時)的Unix毫秒時間戳。

responseStart

返回瀏覽器從服務器收到(或從本地緩存讀取)最後一個字節時(若是在此以前HTTP鏈接已經關閉,則返回關閉時)的Unix毫秒時間戳

domLoading

返回當前網頁DOM結構開始解析時(即Document.readyState屬性變爲「loading」、相應的readystatechange事件觸發時)的Unix毫秒時間戳。

domInteractive

返回當前網頁DOM結構結束解析、開始加載內嵌資源時(即Document.readyState屬性變爲「interactive」、相應的readystatechange事件觸發時)的Unix毫秒時間戳。

domContentLoadedEventStart

返回當前網頁DOMContentLoaded事件發生時(即DOM結構解析完畢、全部腳本開始運行時)的Unix毫秒時間戳。

domContentLoadedEventEnd

返回當前網頁全部須要執行的腳本執行完成時的Unix毫秒時間戳。

domComplete

返回當前網頁DOM結構生成時(即Document.readyState屬性變爲「complete」,以及相應的readystatechange事件發生時)的Unix毫秒時間戳。

loadEventStart

返回當前網頁load事件的回調函數開始時的Unix毫秒時間戳。若是該事件尚未發生,返回0。

loadEventEnd

返回當前網頁load事件的回調函數運行結束時的Unix毫秒時間戳。若是該事件尚未發生,返回0。

如何分析頁面總體加載速度

通常頁面統計所須要的參數(dom解析時間,domContentLoaded時間,onload時間, 白屏時間,getStyleConfig接口返回時間 - 準備加載新頁面的起始時間)

let pt = window.performance.timing;  
        /* dom解析時間 
         *
         *
         *1.domComplete  
         *當前網頁DOM結構生成時(即Document.readyState屬性變爲「complete」,以及相應的
         *readystatechange事件發生時)的Unix毫秒時間戳
         *
         *2.domInteractive 
         *當前網頁DOM結構結束解析、開始加載內嵌資源時
         *即Document.readyState屬性變爲「interactive」、相應的readystatechange事件觸發時
         *的Unix毫秒時間戳。
         */
        let domComplete = pt.domComplete - pt.domInteractive;
        /* domContentLoaded時間
         *
         *
         *當前網頁DOM結構生成時(即Document.readyState屬性變爲「complete」,以及相應的
         *1.domContentLoadedEventEnd  
         *網頁DOMContentLoaded事件發生時(即DOM結構解析完畢、全部腳本開始運行時)的Unix毫秒時間
         *戳。
         *
         *2.navigationStart 
         *當前瀏覽器窗口的前一個網頁關閉,發生unload事件時的Unix毫秒時間戳。
         *若是沒有前一個網頁,則等於fetchStart屬性
         */
         let domLoaded = pt.domContentLoadedEventEnd - pt.navigationStart;
        /* onload時間
         *1.loadEventEnd
         *當前網頁load事件的回調函數運行結束時的Unix毫秒時間戳。若是該事件尚未發生,返回0。
         */
        let onload = pt.loadEventEnd - pt.navigationStart;
        // 白屏時間,getStyleConfig接口返回時間 - 準備加載新頁面的起始時間
        let white = window.dbStyleConfigEnd ? window.dbStyleConfigEnd - pt.navigationStart : '';
        let dbStyle = window.dbStyleConfigEnd - window.dbStyleConfigStart;
        let url = `/statistics/activityPagePerf?hdType=${CFG.appName}&oaId=${CFG.actId}&domComplete=${domComplete}&domLoaded=${domLoaded}&onload=${onload}&white=${white}&dbStyle=${dbStyle}`;
  1. 主要是查看指標值PAGET_頁面加載時間,此指標指的是頁面總體加載時間但不含(onload事件和redirect), 此指標值可直接反應用戶體驗, 今後項指標能夠知道指定某時間段的頁面加載速度值,以及和天,周,月的對比情況.

  2. 也能夠查詢指標ALLT_頁面徹底加載時間, 能夠查詢到從瀏覽器開始導航(用戶點擊連接或在地址欄輸入url或點刷新,後退按鈕)到頁面onload 事件js徹底跑完的全部時間.

若是發現頁面加載速度有增長或減小,則能夠分項查詢前面的每一個指標值,總的來講他們的關係以下:

1.dom開始加載前全部花費時間=重定向時間+域名解析時間+創建鏈接花費時間+請求花費時間+接收數據花費時間

2.pageLoadTime頁面加載時間=域名解析時間+創建鏈接花費時間+請求花費時間+接收數據花費時間+解析dom花費時間+加載dom花費時間

3.allLoadTime頁面徹底加載時間=重定向時間+域名解析時間+創建鏈接花費時間+請求花費時間+接收數據花費時間+解析dom花費時間+加載dom花費時間+執行onload事件花費時間

4.resourcesLoadedTime資源加載時間=解析dom花費時間+加載dom花費時間

相關文章
相關標籤/搜索