The PerformanceResourceTiming interface enables retrieval and analysis of detailed network timing data regarding the loading of an application's resources. An application can use the timing metrics to determine, for example, the length of time it takes to fetch a specific resource, such as an XMLHttpRequest, <SVG>, image, or script.
The interface's properties create a resource loading timeline with high-resolution timestamps for network events such as redirect start and end times, fetch start, DNS lookup start and end times, response start and end times, etc.. Additionally, the interface extends PerformanceEntry with other properties which provide data about the size of the fetched resource as well as the type of resource that initiated the fetch.
This interface extends the following PerformanceEntry properties for resource performance entry types by qualifying and constraining them as follows:
PerformanceEntry.entryTypeRead only
"resource".PerformanceEntry.nameRead only
PerformanceEntry.startTimeRead only
timestamp for the time a resource fetch started. This value is equivalent to PerformanceEntry.fetchStart.PerformanceEntry.durationRead only
timestamp that is the difference between the responseEnd and the startTime properties.The interface also supports the following properties which are listed in the order in which they are recorded for the fetching of a single resource. An alphabetical listing is shown in the navigation, at left.
PerformanceResourceTiming.initiatorTypeRead only
string representing the type of resource that initiated the performance entry, as specified in PerformanceResourceTiming.initiatorType.PerformanceResourceTiming.nextHopProtocolRead only
string representing the network protocol used to fetch the resource, as identified by the ALPN Protocol ID (RFC7301).PerformanceResourceTiming.workerStartRead only
DOMHighResTimeStamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running. If the resource is not intercepted by a Service Worker the property will always return 0.PerformanceResourceTiming.redirectStartRead only
DOMHighResTimeStamp that represents the start time of the fetch which initiates the redirect.PerformanceResourceTiming.redirectEndRead only
DOMHighResTimeStamp immediately after receiving the last byte of the response of the last redirect.PerformanceResourceTiming.fetchStartRead only
DOMHighResTimeStamp immediately before the browser starts to fetch the resource.PerformanceResourceTiming.domainLookupStartRead only
DOMHighResTimeStamp immediately before the browser starts the domain name lookup for the resource.PerformanceResourceTiming.domainLookupEndRead only
DOMHighResTimeStamp representing the time immediately after the browser finishes the domain name lookup for the resource.PerformanceResourceTiming.connectStartRead only
DOMHighResTimeStamp immediately before the browser starts to establish the connection to the server to retrieve the resource.PerformanceResourceTiming.connectEndRead only
DOMHighResTimeStamp immediately after the browser finishes establishing the connection to the server to retrieve the resource.PerformanceResourceTiming.secureConnectionStartRead only
DOMHighResTimeStamp immediately before the browser starts the handshake process to secure the current connection.PerformanceResourceTiming.requestStartRead only
DOMHighResTimeStamp immediately before the browser starts requesting the resource from the server.PerformanceResourceTiming.responseStartRead only
DOMHighResTimeStamp immediately after the browser receives the first byte of the response from the server.PerformanceResourceTiming.responseEndRead only
DOMHighResTimeStamp immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.PerformanceResourceTiming.transferSizeRead only
number representing the size (in octets) of the fetched resource. The size includes the response header fields plus the response payload body.PerformanceResourceTiming.encodedBodySizeRead only
number representing the size (in octets) received from the fetch (HTTP or cache), of the payload body, before removing any applied content-codings.PerformanceResourceTiming.decodedBodySizeRead only
number that is the size (in octets) received from the fetch (HTTP or cache) of the message body, after removing any applied content-codings.PerformanceResourceTiming.serverTimingRead only
PerformanceServerTiming entries containing server timing metrics.PerformanceResourceTiming.toJSON()DOMString that is the JSON representation of the PerformanceResourceTiming object.See the example in Using the Resource Timing API.
| Specification | Status | Comment |
|---|---|---|
| Resource Timing Level 1 The definition of 'PerformanceResourceTiming' in that specification. | Candidate Recommendation | Initial definition. |
| Desktop | ||||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
| Basic support | 43 | Yes | 40 | 10 | 30 | 11 |
connectEnd |
43 | 12 | 40 | 10 | 32 | 11 |
connectStart |
43 | 12 | 40 | 10 | 32 | 11 |
decodedBodySize |
54 | 17 | No | No | 41 | No |
domainLookupEnd |
43 | 12 | 40 | No | 30 | 11 |
domainLookupStart |
43 | 12 | 40 | No | 30 | 11 |
encodedBodySize |
54 | 17 | No | No | 41 | No |
fetchStart |
43 | 12 | 40 | No | 30 | 11 |
initiatorType |
43 | 12 | 40 | No | 30 | 11 |
nextHopProtocol |
61 | 17 | 51 | No | No | No |
redirectEnd |
43 | 12 | 40 | No | 30 | 11 |
redirectStart |
43 | 12 | 40 | No | 30 | 11 |
requestStart |
43 | 12 | 40 | No | 30 | 11 |
responseEnd |
43 | 12 | 40 | No | 30 | 11 |
responseStart |
43 | 12 | 40 | No | 30 | 11 |
secureConnectionStart |
43 | Yes | 40 | No | 30 | 11 |
serverTiming |
65 | ? | 61 | No | 52 | ? |
transferSize |
54 | 17 | No | No | 41 | No |
workerStart |
43 | 16 | 58 | No | 32 | 11 |
toJSON |
43 | Yes | 40 | No | 30 | 11 |
| Available in workers | 43 | Yes | 60 | No | 32 | No |
| Mobile | |||||||
|---|---|---|---|---|---|---|---|
| Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
| Basic support | 43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
connectEnd |
43 | 43 | Yes | 42 | 32 | 11 | 4.0 |
connectStart |
43 | 43 | Yes | 42 | 32 | 11 | 4.0 |
decodedBodySize |
54 | 54 | 17 | No | 41 | No | 6.0 |
domainLookupEnd |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
domainLookupStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
encodedBodySize |
54 | 54 | 17 | No | 41 | No | 6.0 |
fetchStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
initiatorType |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
nextHopProtocol |
61 | 61 | 17 | No | No | No | No |
redirectEnd |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
redirectStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
requestStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
responseEnd |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
responseStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
secureConnectionStart |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
serverTiming |
65 | 65 | ? | 61 | 52 | ? | ? |
transferSize |
54 | 54 | 17 | No | 41 | No | 6.0 |
workerStart |
43 | 43 | Yes | 58 | 32 | 11 | 4.0 |
toJSON |
43 | 43 | Yes | 42 | 30 | 11 | 4.0 |
| Available in workers | 43 | 43 | Yes | 60 | 32 | No | 4.0 |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming