This is an automated email from the ASF dual-hosted git repository. wusheng pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/skywalking-client-js.git
commit 87cbbd2e9477d8fbb0624b01ea25b1a3e9b4db7c Author: Qiuxia Fan <[email protected]> AuthorDate: Tue Aug 4 17:31:57 2020 +0800 feat: update perf metrics --- src/performance/perf.ts | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/performance/perf.ts b/src/performance/perf.ts index 5943e8b..0ea7c84 100644 --- a/src/performance/perf.ts +++ b/src/performance/perf.ts @@ -26,7 +26,7 @@ class PagePerf { } const { timing } = window.performance; const loadTime = timing.loadEventEnd - timing.loadEventStart; - const navigationStart = timing.navigationStart; + let redirectTime = 0; if (loadTime < 0) { setTimeout(() => { @@ -35,18 +35,30 @@ class PagePerf { return; } + if (timing.navigationStart !== undefined) { + redirectTime = timing.fetchStart - timing.navigationStart; + } else if (timing.redirectEnd !== undefined) { + redirectTime = timing.redirectEnd - timing.redirectStart; + } else { + redirectTime = 0; + } + return { - redirectTime: timing.redirectEnd - timing.redirectStart, + redirectTime, dnsTime: timing.domainLookupEnd - timing.domainLookupStart, - ttfbTime: timing.responseStart - navigationStart, - appcacheTime: timing.domainLookupStart - timing.fetchStart, - unloadTime: timing.unloadEventEnd - timing.unloadEventStart, + ttfbTime: timing.responseStart - timing.requestStart, // Time to First Byte + // appcacheTime: timing.domainLookupStart - timing.fetchStart, + // unloadTime: timing.unloadEventEnd - timing.unloadEventStart, tcpTime: timing.connectEnd - timing.connectStart, - reqTime: timing.responseEnd - timing.responseStart, - analysisTime: timing.domComplete - timing.domInteractive, - blankTime: timing.domLoading - navigationStart, - domReadyTime: timing.domContentLoadedEventEnd - navigationStart, - loadPage: timing.loadEventEnd - navigationStart, + transTime: timing.responseEnd - timing.responseStart, + domAnalysisTime: timing.domInteractive - timing.responseEnd, + fptTime: timing.responseEnd - timing.fetchStart, // First Paint Time or Blank Screen Time + domReadyTime: timing.domContentLoadedEventEnd - timing.fetchStart, + loadPage: timing.loadEventStart - timing.fetchStart, // Page full load time + resTime: timing.loadEventStart - timing.domContentLoadedEventEnd, // Synchronous load resources in the page + sslTime: timing.connectEnd - timing.secureConnectionStart, // Only valid for HTTPS + ttlTime: timing.domInteractive - timing.fetchStart, // time to interact + firstPackTime: timing.responseStart - timing.domainLookupStart, // first pack time }; } catch (e) { throw e;
