Signatur
Beschreibung
performance.timing.domainLookupStart liefert den Zeitpunkt, an dem der Browser mit der DNS-Auflösung (Domain Lookup) für die aktuelle Seite beginnt. Der Wert ist ein absoluter Zeitstempel in Millisekunden seit dem 1. Januar 1970 (UNIX-Epoche), also vergleichbar mit Date.now().
Zusammen mit domainLookupEnd ergibt sich die Dauer der DNS-Auflösung. Wurde eine persistente Verbindung genutzt oder stammt die Antwort aus einem Cache (HTTP-Cache, DNS-Cache, lokale Ressource), ist der Wert identisch mit fetchStart. Die DNS-Dauer beträgt dann 0.
Die gesamte Schnittstelle PerformanceTiming gilt als veraltet. Für neuen Code solltest du die Eigenschaft PerformanceNavigationTiming.domainLookupStart aus der Navigation-Timing-Level-2-API verwenden. Sie liefert hochauflösende, relative Zeitwerte (DOMHighResTimeStamp), gemessen ab performance.timeOrigin.
Rückgabewert
unsigned long long) in Millisekunden seit der UNIX-Epoche, an dem die DNS-Auflösung beginnt. Entspricht fetchStart, wenn kein DNS-Lookup stattfand.Beispiele
DNS-Auflösungsdauer mit der veralteten API messen
window.addEventListener('load', () => {
const t = performance.timing;
const dnsDauer = t.domainLookupEnd - t.domainLookupStart;
console.log(`DNS-Auflösung: ${dnsDauer} ms`);
});
Moderne Alternative mit PerformanceNavigationTiming
const [nav] = performance.getEntriesByType('navigation');
if (nav) {
const dns = nav.domainLookupEnd - nav.domainLookupStart;
console.log(`DNS (hochauflösend): ${dns.toFixed(2)} ms`);
console.log(`DNS-Start relativ zu timeOrigin: ${nav.domainLookupStart.toFixed(2)} ms`);
}
Prüfen, ob die DNS-Auflösung aus dem Cache kam
const t = performance.timing;
const ausCache = t.domainLookupStart === t.fetchStart
&& t.domainLookupEnd === t.fetchStart;
console.log(ausCache
? 'Kein DNS-Lookup (Cache oder persistente Verbindung)'
: `DNS begann ${t.domainLookupStart - t.navigationStart} ms nach Navigationsstart`);
// Wichtig · Fallstricke
- Veraltet:
performance.timingist deprecated. Die Eigenschaft ist in allen gängigen Browsern zwar noch vorhanden, kann aber künftig wegfallen. Verwende stattdessenperformance.getEntriesByType('navigation'). - Die Werte sind absolute Epochen-Zeitstempel in ganzen Millisekunden. Die Werte von
PerformanceNavigationTimingsind dagegen relativ und haben Nachkommastellen. Mische beide Varianten nicht, ohne umzurechnen (performance.timeOriginaddieren). - Bei Cache-Treffern oder wiederverwendeten Verbindungen ist
domainLookupStart === fetchStart, die Dauer ist dann0. - Lies die Werte erst nach dem Ereignis
loadaus. Vorher können spätere Zeitstempel noch0sein. - Die Eigenschaft betrifft nur das Hauptdokument. Für Teilressourcen (Bilder, Skripte) nutzt du
PerformanceResourceTiming.domainLookupStart. Bei ursprungsübergreifenden (Cross-Origin-)Ressourcen ist der Wert ohne den HeaderTiming-Allow-Origingleich0.