1. このページの目的
Navigation Timing Level 2 を使い、本Webページのロード処理に関するパフォーマンスを測定する。
※ 実験的機能である(2020年12月)。
2. 本ページで実行しているソースコード(抜粋)
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());
}
}
<body onload="showNavigationDetails()">
3. 結果
- DevTools の Console パネルに出力される。
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();
};
// いろいろな掛かった時間
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. メモ
PerformanceNavigationTiming
interfacea のプロパティは、まだはっきり仕様が決まっていないようだ。