Navigation Timing API を使う

1. このページの目的

Navigation Timing Level 2 を使い、本Webページのロード処理に関するパフォーマンスを測定する。

※ 実験的機能である(2020年12月)。

2. 本ページで実行しているソースコード(抜粋)

JavaScript

function showNavigationDetails() {

  let perfEntries = performance.getEntriesByType("navigation");

  for (let i=0; i < perfEntries.length; i++) {
    console.log("= Navigation entry[" + i + "]");
    let p = perfEntries[i];

    // いろいろな掛かった時間
    console.log("Domain Lookup に掛かった時間 = " + (p.domainLookupEnd - p.domainLookupStart));
    console.log("Connect に掛かった時間       = " + (p.connectEnd - p.connectStart));
    console.log("Response に掛かった時間      = " + (p.responseEnd - p.responseStart));


    // dom Properties
    console.log("DOM content loaded に掛かった時間 = " + (p.domContentLoadedEventEnd - p.domContentLoadedEventStart));
    console.log("DOM complete = " + p.domComplete);
    console.log("DOM interactive = " + p.interactive);

    // document load and unload time
    console.log("document load に掛かった時間   = " + (p.loadEventEnd - p.loadEventStart));
    console.log("document unload に掛かった時間 = " + (p.unloadEventEnd - p.unloadEventStart));

    // other properties
    console.log("type = " + p.type);
    console.log("redirectCount = " + p.redirectCount);

    console.table(p.toJSON());
  }
}

HTML

<body onload="showNavigationDetails()">

3. 結果

4. 参考情報

PerformanceNavigationTiming interface

[Exposed=Window]
interface PerformanceNavigationTiming : PerformanceResourceTiming {
    readonly        attribute DOMHighResTimeStamp unloadEventStart;
    readonly        attribute DOMHighResTimeStamp unloadEventEnd;
    readonly        attribute DOMHighResTimeStamp domInteractive;
    readonly        attribute DOMHighResTimeStamp domContentLoadedEventStart;
    readonly        attribute DOMHighResTimeStamp domContentLoadedEventEnd;
    readonly        attribute DOMHighResTimeStamp domComplete;
    readonly        attribute DOMHighResTimeStamp loadEventStart;
    readonly        attribute DOMHighResTimeStamp loadEventEnd;
    readonly        attribute NavigationType      type;
    readonly        attribute unsigned short      redirectCount;
    [Default] object toJSON();
};

PerformanceNavigationTiming interface のプロパティを使う例

// いろいろな掛かった時間
Domain Lookup に掛かった時間 = domainLookupEnd - p.domainLookupStart
Connect に掛かった時間       = connectEnd - p.connectStart
Response に掛かった時間      = responseEnd - p.responseStart

// dom Properties
DOM content load に掛かった時間 = domContentLoadedEventEnd - domContentLoadedEventStart
DOM complete                    = domComplete
DOM interactive                 = interactive

// document load and unload time
document load に掛かった時間   = loadEventEnd - loadEventStart
document unload に掛かった時間 = unloadEventEnd - unloadEventStart

5. メモ

6. 参考