相信不少人都在使用window.performance來監控頁面的性能。都會在頁面onload後,去獲取window.performance.timingweb
但若是真正分析過數據的人,都會發現window.performance.timing.loadEventEnd有些時候在onload時間觸發後
仍是爲0dom
這時候可能有些人會延遲再從新獲取一次tcp
這裏帶來另一種思路實現性能
(function(){ if (window.performance || window.webkitPerformance) { var perf = window.performance || window.webkitPerformance; var timing = perf.timing; var navi = perf.navigation; var timer = setInterval(function() { if (0 !== timing.loadEventEnd) { clearInterval(timer); var data = { url: window.location.href, ua: window.navigator.userAgent, dns :timing.domainLookupEnd - timing.domainLookupStart, tcp :timing.connectEnd - timing.connectStart, request : timing.responseEnd -timing.responseStart, blank : timing.domLoading - timing.fetchStart, domready : timing.domContentLoadedEventEnd - timing.fetchStart, onload : timing.loadEventEnd - timing.fetchStart, firstimagetime : 0, isdirty : 0 };
用了一個定時器去判斷timing.loadEventEnd不等於0的時候纔去上報。fetch
這樣的寫法有兩個好處
1 沒必要侷限於onload方法了,能夠在任什麼時候候執行
2 保證loadEventEnd不爲0,避免髒數據url
好處多多...是否是要改進下上報的寫法呢。code