PerformanceResourceTiming: domainLookupStart property
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
Note: This feature is available in Web Workers.
The domainLookupStart read-only property returns the timestamp immediately before the browser starts the domain name lookup for the resource.
Value
The domainLookupStart property can have the following values:
- A
DOMHighResTimeStampimmediately before the browser starts the domain name lookup for the resource. 0if the resource was instantaneously retrieved from a cache.0if the resource is a cross-origin request and noTiming-Allow-OriginHTTP response header is used.
Examples
>Measuring DNS lookup time
The domainLookupStart and domainLookupEnd properties can be used to measure how long it takes for the DNS lookup to happen.
const dns = entry.domainLookupEnd - entry.domainLookupStart;
Example using a PerformanceObserver, which notifies of new resource performance entries as they are recorded in the browser's performance timeline. Use the buffered option to access entries from before the observer creation.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
const dns = entry.domainLookupEnd - entry.domainLookupStart;
if (dns > 0) {
console.log(`${entry.name}: DNS lookup duration: ${dns}ms`);
}
});
});
observer.observe({ type: "resource", buffered: true });
Example using Performance.getEntriesByType(), which only shows resource performance entries present in the browser's performance timeline at the time you call this method:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
const dns = entry.domainLookupEnd - entry.domainLookupStart;
if (dns > 0) {
console.log(`${entry.name}: DNS lookup duration: ${dns}ms`);
}
});
Cross-origin timing information
If the value of the domainLookupStart property is 0, the resource might be a cross-origin request. To allow seeing cross-origin timing information, the Timing-Allow-Origin HTTP response header needs to be set.
For example, to allow https://big.rakal.top to see timing resources, the cross-origin resource should send:
Timing-Allow-Origin: https://big.rakal.top
Specifications
| Specification |
|---|
| Resource Timing> # dom-performanceresourcetiming-domainlookupstart> |
Browser compatibility
Loading…