Start · Sprachen · JavaScript · Referenz · PerformanceTiming.connectEnd

PerformanceTiming.connectEnd

Eigenschaft

Liefert den Zeitpunkt in Millisekunden seit der UNIX-Epoche, zu dem die Verbindung zum Server einschließlich TLS-Handshake vollständig aufgebaut war.

seit JavaScript Veraltet (Navigation Timing Level 1), wird aber no deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.connectEnd

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

Typ
number
Beschreibung
Ganzzahliger Zeitstempel in Millisekunden seit der UNIX-Epoche (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()}`);
Verbindung aufgebaut um: 2024-05-14T09:21:07.412Z

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`);
});
TCP+TLS: 48 ms, davon TLS: 27 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`);
});
Verbindungsaufbau: 47.8 ms

// Wichtig · Fallstricke

  • Veraltet: PerformanceTiming ist Teil von Navigation Timing Level 1 und als veraltet markiert. Die Browser unterstützen die Eigenschaft zwar weiterhin, für neuen Code solltest du aber PerformanceNavigationTiming über performance.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 zu timeOrigin sind.
  • Ein Ergebnis von 0 für connectEnd - connectStart ist 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 noch 0 sein.
  • Das Interface ist nur im Hauptdokument verfügbar, nicht in Workern.