Signatur
Beschreibung
Die schreibgeschützte Eigenschaft performance.timing.connectStart liefert den Zeitpunkt, an dem der Browser begonnen hat, eine Netzwerkverbindung (TCP, ggf. inklusive TLS-Handshake) zum Server aufzubauen, um das aktuelle Dokument abzurufen. Der Wert wird in Millisekunden seit dem UNIX-Epoch (1. Januar 1970, UTC) angegeben, also als absoluter Zeitstempel.
Wird eine bestehende, dauerhafte Verbindung wiederverwendet (Keep-Alive) oder kommt das Dokument aus dem Cache, gibt es keinen neuen Verbindungsaufbau. connectStart hat dann denselben Wert wie domainLookupEnd. Zusammen mit connectEnd lässt sich die Dauer des Verbindungsaufbaus messen, zusammen mit domainLookupEnd eine mögliche Lücke zwischen DNS-Auflösung und Verbindungsbeginn.
Das Interface PerformanceTiming gilt als veraltet. In neuem Code solltest du stattdessen PerformanceNavigationTiming.connectStart verwenden (über performance.getEntriesByType("navigation")). Diese Variante liefert hochauflösende Werte vom Typ DOMHighResTimeStamp relativ zu performance.timeOrigin statt absoluter Epoch-Millisekunden.
Rückgabewert
unsigned long long) in Millisekunden seit dem UNIX-Epoch. Wurde keine neue Verbindung aufgebaut, ist der Wert gleich domainLookupEnd.Beispiele
Dauer des Verbindungsaufbaus messen (veraltete API)
window.addEventListener("load", () => {
const t = performance.timing;
// Dauer des TCP-/TLS-Verbindungsaufbaus
const connectDauer = t.connectEnd - t.connectStart;
console.log(`connectStart: ${t.connectStart}`);
console.log(`Verbindungsaufbau: ${connectDauer} ms`);
});
Wiederverwendete Verbindung erkennen
window.addEventListener("load", () => {
const { connectStart, connectEnd, domainLookupEnd } = performance.timing;
if (connectStart === domainLookupEnd && connectStart === connectEnd) {
console.log("Keine neue Verbindung – Keep-Alive oder Cache.");
} else {
console.log(`Neue Verbindung in ${connectEnd - connectStart} ms aufgebaut.`);
}
});
Moderne Alternative mit PerformanceNavigationTiming
const messeVerbindung = () => {
const [nav] = performance.getEntriesByType("navigation");
if (!nav) return;
// Werte sind relativ zu performance.timeOrigin (hochauflösend)
const tcp = nav.connectEnd - nav.connectStart;
const tls = nav.secureConnectionStart > 0
? nav.connectEnd - nav.secureConnectionStart
: 0;
console.log(`TCP gesamt: ${tcp.toFixed(1)} ms, davon TLS: ${tls.toFixed(1)} ms`);
};
window.addEventListener("load", messeVerbindung);
// Wichtig · Fallstricke
- Veraltet:
PerformanceTimingundperformance.timingstammen aus Navigation Timing Level 1 und sind als veraltet markiert. Sie funktionieren in den Browsern zwar noch, können aber entfernt werden. NutzePerformanceNavigationTiming. - Einheiten nicht mischen:
performance.timing.connectStartist ein absoluter Epoch-Wert,PerformanceNavigationTiming.connectStartdagegen ein relativerDOMHighResTimeStamp. Werte aus beiden APIs darfst du nicht direkt voneinander abziehen. - Nicht zu früh auslesen: Liest du Werte aus, bevor die Navigation abgeschlossen ist (z. B.
loadEventEnd), können sie noch0sein. Werte deshalb im oder nach demload-Event auswerten. - Keine neue Verbindung: Bei Keep-Alive, HTTP/2-Multiplexing, bfcache oder Service-Worker-Antworten ist
connectStart === domainLookupEnd. Die gemessene Dauer ist dann0. - TLS: Der TLS-Handshake liegt zwischen
connectStartundconnectEnd. Seinen Beginn markiertsecureConnectionStart. - Datenschutz: Die Zeitauflösung kann von Browsern absichtlich verringert werden (Schutz vor Fingerprinting und Timing-Angriffen).
- Nur im Fenster-Kontext verfügbar, nicht in Web Workern.