The PerformanceResourceTiming interface enables retrieving and analyzing 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 performance entries 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 by qualifying and constraining these properties for performance entries with an entry type of "resource":
PerformanceEntry.entryType- Set to "resource".PerformanceEntry.name- Set to the resource's URL.PerformanceEntry.startTime- Set to thetimestampimmediately before the browser tofetch the resource.PerformanceEntry.duration- Set to the difference between the resource'sresponseEndtimestampand itsstartTimetimestamp.
Properties
The timing properties given below 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- A
stringrepresenting the type of resource that initiated the performance entry, as specified inPerformanceResourceTiming.initiatorType. PerformanceResourceTiming.nextHopProtocolRead only- A
stringrepresenting the network protocol used to fetch the resource, as identified by the ALPN Protocol ID (RFC7301). PerformanceResourceTiming.workerStartRead only- If the current context is a
worker, returns theDOMHighResTimeStampimmediately before the worker is started that fetches the resource; otherwise zero is returned. PerformanceResourceTiming.redirectStartRead only- A
DOMHighResTimeStampthat represents the start time of the fetch which initiates the redirect. PerformanceResourceTiming.redirectEndRead only- A
DOMHighResTimeStampimmediately after receiving the last byte of the response of the last redirect. PerformanceResourceTiming.fetchStartRead only- A
DOMHighResTimeStampimmediately before the browser starts to fetch the resource. PerformanceResourceTiming.domainLookupStartRead only- A
DOMHighResTimeStampimmediately before the browser starts the domain name lookup for the resource. PerformanceResourceTiming.domainLookupEndRead only- A
DOMHighResTimeStamprepresenting the time immediately after the browser finishes the domain name lookup for the resource. PerformanceResourceTiming.connectStartRead only- A
DOMHighResTimeStampimmediately before the browser starts to establish the connection to the server to retrieve the resource. PerformanceResourceTiming.connectEndRead only- A
DOMHighResTimeStampimmediately after the browser finishes establishing the connection to the server to retrieve the resource. PerformanceResourceTiming.secureConnectionStartRead only- A
DOMHighResTimeStampimmediately before the browser starts the handshake process to secure the current connection. PerformanceResourceTiming.requestStartRead only- A
DOMHighResTimeStampimmediately before the browser starts requesting the resource from the server. PerformanceResourceTiming.responseStartRead only- A
DOMHighResTimeStampimmediately after the browser receives the first byte of the response from the server. PerformanceResourceTiming.responseEndRead only- A
DOMHighResTimeStampimmediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first. PerformanceResourceTiming.transferSizeRead only- A
numberrepresenting the size (in octets) of the fetched resource. The size includes the response header fields plus the response payload body. PerformanceResourceTiming.encodedBodySizeRead only- A
numberrepresenting the size (in octets) received from the fetch (HTTP or cahce), of the payload body, before removing any applied content-codings. PerformanceResourceTiming.decodedBodySizeRead only- A
numberthat is the size (in octets) received from the fetch (HTTP or cache) of the message body, after removing any applied content-codings.
Methods
PerformanceResourceTiming.toJSON()- Returns a
DOMStringthat is the JSON representation of thePerformanceResourceTimingobject.
Example
See the example in Using the Resource Timing API.
Specifications
| Specification | Status | Comment |
|---|---|---|
| Resource Timing Level 1 The definition of 'PerformanceResourceTiming' in that specification. |
Candidate Recommendation | Initial definition. |
Browser compatibility
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Basic support. | 43.0 | (Yes) | 40 | 10 | 32 | No support |
transferSize, encodedBodySize and decodedBodySize |
54.0 | ? | ? | ? | 41 | ? |
| Feature | Android | Android Webview | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|---|---|
| Basic support. | 4.4 | (Yes) | (Yes) | 42 | ? | 10.0 | 32 | No support | (Yes) |
transferSize, encodedBodySize and decodedBodySize |
No support | 54.0 | ? | ? | ? | ? | 41 | ? | 54.0 |