相信不少人都在使用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