- From: Jatinder Mann <jmann@microsoft.com>
- Date: Wed, 4 Apr 2012 16:41:53 +0000
- To: "public-web-perf@w3.org" <public-web-perf@w3.org>
- Message-ID: <EE4C13A1D11CFA49A58343DE361B0B041772AE48@TK5EX14MBXC253.redmond.corp.microsoft.>
In order for Navigation Timing to take its respective place in the timeline, Section 4.4 of Performance Timeline defines a PerformanceEntry object for Navigation Timing that contains the "name", "entryType", "startTime" and "duration" attributes. With "startTime" and "duration", when looking at the entire timeline, the page navigation time is included along with resource and developer script data. We previously had not considered adding the Navigation Timing attributes to the PerformanceEntry for Navigation Timing, as these attributes already exist in PerformanceTiming, as defined in the Navigation Timing spec. However, whereas Resource Timing and User Timing benefit from having sub-millisecond timing information due to High Resolution Time (DOMHighResTimeStamp), individual Navigation Timing attributes are only given in millisecond resolution on the PerformanceTiming interface. Further, the attributes are in a different timebase, so it's difficult to compare the fetchStart of the navigation with the fetchStart of a particular resource, as an example. For compatibility reasons, we do not want to change PerformanceTiming. However, should we consider adding the Navigation Timing attributes to the navigation PerformanceEntry? Each attribute would return a DOMHighResTimeStamp with the attribute definition linked to the Navigation Timing spec definition. E.g., when invoking getEntries("navigation"), you would get the following object: interface PerformanceNavigationTiming : PerformanceEntry { //Defined in PerformanceEntry // readonly DOMString name; // readonly DOMString entryType; // readonly DOMHighResTimeStamp startTime; // readonly DOMHighResTimeStamp duration; readonly attribute DOMHighResTimeStamp navigationStart; readonly attribute DOMHighResTimeStamp unloadEventStart; readonly attribute DOMHighResTimeStamp unloadEventEnd; readonly attribute DOMHighResTimeStamp redirectStart; readonly attribute DOMHighResTimeStamp redirectEnd; readonly attribute DOMHighResTimeStamp fetchStart; readonly attribute DOMHighResTimeStamp domainLookupStart; readonly attribute DOMHighResTimeStamp domainLookupEnd; readonly attribute DOMHighResTimeStamp connectStart; readonly attribute DOMHighResTimeStamp connectEnd; readonly attribute DOMHighResTimeStamp secureConnectionStart; readonly attribute DOMHighResTimeStamp requestStart; readonly attribute DOMHighResTimeStamp responseStart; readonly attribute DOMHighResTimeStamp responseEnd; readonly attribute DOMHighResTimeStamp domLoading; readonly attribute DOMHighResTimeStamp domInteractive; readonly attribute DOMHighResTimeStamp domContentLoadedEventStart; readonly attribute DOMHighResTimeStamp domContentLoadedEventEnd; readonly attribute DOMHighResTimeStamp domComplete; readonly attribute DOMHighResTimeStamp loadEventStart; readonly attribute DOMHighResTimeStamp loadEventEnd; }; Let's discuss in the call today. Thanks, Jatinder
Received on Wednesday, 4 April 2012 16:42:39 UTC