Start · Sprachen · JavaScript · Referenz · PerformanceTiming.domainLookupStart

PerformanceTiming.domainLookupStart

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft: Zeitstempel in Millisekunden seit der UNIX-Epoche, an dem die DNS-Auflösung für das Dokument beginnt.

seit JavaScript Veraltet (Navigation Timing Level 1), in allen Bro deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.domainLookupStart

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

Typ
number
Beschreibung
Ganzzahliger Zeitstempel (IDL-Typ 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`);
});
DNS-Auflösung: 12 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`);
}
DNS (hochauflösend): 11.80 ms DNS-Start relativ zu timeOrigin: 4.30 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`);
Kein DNS-Lookup (Cache oder persistente Verbindung)

// Wichtig · Fallstricke

  • Veraltet: performance.timing ist deprecated. Die Eigenschaft ist in allen gängigen Browsern zwar noch vorhanden, kann aber künftig wegfallen. Verwende stattdessen performance.getEntriesByType('navigation').
  • Die Werte sind absolute Epochen-Zeitstempel in ganzen Millisekunden. Die Werte von PerformanceNavigationTiming sind dagegen relativ und haben Nachkommastellen. Mische beide Varianten nicht, ohne umzurechnen (performance.timeOrigin addieren).
  • Bei Cache-Treffern oder wiederverwendeten Verbindungen ist domainLookupStart === fetchStart, die Dauer ist dann 0.
  • Lies die Werte erst nach dem Ereignis load aus. Vorher können spätere Zeitstempel noch 0 sein.
  • 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 Header Timing-Allow-Origin gleich 0.