Signatur
Beschreibung
Die nur lesbare Eigenschaft performance.timing.domainLookupEnd gibt eine Zahl (unsigned long long) zurück. Sie gibt den Zeitpunkt in Millisekunden seit der UNIX-Epoche an, an dem die Domain-Auflösung (DNS-Abfrage) für das aktuelle Dokument abgeschlossen war.
Zusammen mit domainLookupStart lässt sich daraus die Dauer der DNS-Auflösung berechnen: domainLookupEnd - domainLookupStart. Das ist beim Analysieren der Ladezeit nützlich, etwa um langsame DNS-Server zu finden oder zu prüfen, ob dns-prefetch wirkt.
Bei einer persistenten Verbindung oder wenn die Antwort aus dem Cache oder einer lokalen Ressource kommt, findet keine DNS-Abfrage statt. Dann hat domainLookupEnd denselben Wert wie fetchStart.
Die gesamte PerformanceTiming-Schnittstelle gilt als veraltet. In neuem Code solltest du stattdessen PerformanceNavigationTiming.domainLookupEnd aus der Navigation Timing Level 2 verwenden. Du bekommst den Wert über performance.getEntriesByType("navigation"). Er ist ein hochauflösender DOMHighResTimeStamp, gemessen relativ zu performance.timeOrigin.
Rückgabewert
fetchStart.Beispiele
Dauer der DNS-Abfrage ermitteln (veraltete API)
window.addEventListener("load", () => {
const { domainLookupStart, domainLookupEnd } = performance.timing;
const dnsDauer = domainLookupEnd - domainLookupStart;
console.log(`DNS-Abfrage: ${dnsDauer} ms`);
});
Moderne Alternative mit PerformanceNavigationTiming
const [nav] = performance.getEntriesByType("navigation");
if (nav) {
const dns = nav.domainLookupEnd - nav.domainLookupStart;
console.log(`DNS-Abfrage: ${dns.toFixed(2)} ms`);
}
Fallback: erst neue API versuchen, dann alte
const dnsDauer = () => {
const [nav] = performance.getEntriesByType?.("navigation") ?? [];
if (nav) return nav.domainLookupEnd - nav.domainLookupStart;
const t = performance.timing;
return t.domainLookupEnd - t.domainLookupStart;
};
window.addEventListener("load", () => {
const ms = dnsDauer();
console.log(ms === 0 ? "Keine DNS-Abfrage (Cache/Keep-Alive)" : `DNS: ${ms} ms`);
});
// Wichtig · Fallstricke
- Veraltet:
performance.timingist deprecated und kann in künftigen Browserversionen entfernt werden. Nutze stattdessenPerformanceNavigationTiming. Heute wird die alte API aber noch von allen gängigen Browsern unterstützt. - Die Werte sind absolute Zeitstempel in Millisekunden seit der Epoche und nur auf ganze Millisekunden genau. Die neue API liefert relative, hochauflösende Werte. Mische beide Arten nicht in einer Rechnung.
- Kommt die Antwort aus dem Cache, über eine wiederverwendete Verbindung oder wurde die DNS-Auflösung vorab erledigt (
dns-prefetch), ist die berechnete Dauer oft0. - Lies den Wert frühestens nach dem
load-Ereignis aus. Davor sind manche Felder vonPerformanceTimingnoch0. - Der Wert gilt nur für das Hauptdokument. Die DNS-Zeiten einzelner Ressourcen findest du in
PerformanceResourceTiming. Bei fremden Domains ohneTiming-Allow-Origin-Header sind diese Werte dort0.