Signatur
Beschreibung
Die schreibgeschützte Eigenschaft connectEnd des veralteten Interfaces PerformanceTiming (erreichbar über performance.timing) enthält einen unsigned long long-Wert. Er gibt den Zeitpunkt in Millisekunden seit der UNIX-Epoche an, zu dem der Verbindungsaufbau zum Server abgeschlossen war. Dazu zählt auch ein eventueller TLS/SSL-Handshake und die Authentifizierung beim Proxy.
Wenn eine persistente Verbindung (Keep-Alive) verwendet wird oder die Ressource aus einem Cache kommt, ist gar kein neuer Verbindungsaufbau nötig. connectEnd hat dann denselben Wert wie domainLookupEnd. Tritt beim Verbindungsaufbau ein Fehler auf und baut der Browser die Verbindung neu auf, bezieht sich der Wert auf die zuletzt aufgebaute Verbindung.
Meistens nutzt man den Wert zusammen mit connectStart, um die Dauer des TCP- und TLS-Verbindungsaufbaus zu messen, oder mit requestStart, um die Wartezeit zwischen Verbindungsaufbau und dem Absenden der Anfrage zu ermitteln. Für neuen Code solltest du stattdessen PerformanceNavigationTiming.connectEnd aus der Navigation Timing Level 2-API verwenden. Dort sind die Werte hochauflösende Zeitstempel (DOMHighResTimeStamp) relativ zu performance.timeOrigin.
Rückgabewert
unsigned long long). Bei persistenten Verbindungen ist er gleich domainLookupEnd. Solange der Verbindungsaufbau noch nicht abgeschlossen ist, ist der Wert 0.Beispiele
Rohwert auslesen
const { connectEnd } = performance.timing;
console.log(`Verbindung aufgebaut um: ${new Date(connectEnd).toISOString()}`);
Dauer des Verbindungsaufbaus messen (inkl. TLS)
window.addEventListener('load', () => {
const t = performance.timing;
const connectDauer = t.connectEnd - t.connectStart;
const tlsDauer = t.secureConnectionStart > 0
? t.connectEnd - t.secureConnectionStart
: 0;
console.log(`TCP+TLS: ${connectDauer} ms, davon TLS: ${tlsDauer} ms`);
});
Moderne Alternative mit Fallback
const getConnectDauer = () => {
const [nav] = performance.getEntriesByType('navigation');
if (nav) {
// Navigation Timing Level 2: hochauflösend, relativ zu timeOrigin
return nav.connectEnd - nav.connectStart;
}
// Fallback auf die veraltete API
const t = performance.timing;
return t.connectEnd - t.connectStart;
};
window.addEventListener('load', () => {
console.log(`Verbindungsaufbau: ${getConnectDauer().toFixed(1)} ms`);
});
// Wichtig · Fallstricke
- Veraltet:
PerformanceTimingist Teil von Navigation Timing Level 1 und als veraltet markiert. Die Browser unterstützen die Eigenschaft zwar weiterhin, für neuen Code solltest du aberPerformanceNavigationTimingüberperformance.getEntriesByType('navigation')verwenden. - Die Werte sind absolute Epoch-Millisekunden und nur ganzzahlig. Du kannst sie nicht direkt mit
performance.now()oder Level-2-Zeitstempeln vergleichen, weil diese relativ zutimeOriginsind. - Ein Ergebnis von
0fürconnectEnd - connectStartist normal. Das passiert bei wiederverwendeten Verbindungen (Keep-Alive, HTTP/2), bei Antworten aus dem Cache oder aus einem Service Worker. - Lies den Wert frühestens nach dem
load-Event aus. Vorher können einzelne Felder noch0sein. - Das Interface ist nur im Hauptdokument verfügbar, nicht in Workern.