Start · Sprachen · JavaScript · Referenz · PerformanceTiming.secureConnectionStart

PerformanceTiming.secureConnectionStart

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft: Zeitpunkt in Millisekunden seit der UNIX-Epoche, an dem der TLS-Handshake für die sichere Verbindung begann – oder <code>0</code>.

seit JavaScript Veraltet (Navigation Timing Level 1), ersetzt durc deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.secureConnectionStart

Beschreibung

PerformanceTiming.secureConnectionStart gibt einen unsigned long long-Wert zurück. Er gibt an, wann der Browser den Handshake für die sichere Verbindung (TLS/SSL) begonnen hat, gemessen in Millisekunden seit dem 1. Januar 1970 (UTC). Wird keine sichere Verbindung verwendet, etwa bei reinem HTTP, liefert die Eigenschaft 0.

Zusammen mit connectStart und connectEnd lässt sich damit ermitteln, wie lange der TLS-Handshake beim Laden der Seite gedauert hat. Rechnet man connectEnd - secureConnectionStart, erhält man die reine Handshake-Zeit. Rechnet man secureConnectionStart - connectStart, erhält man die Zeit für den TCP-Verbindungsaufbau.

Das gesamte Interface PerformanceTiming (erreichbar über performance.timing) gilt als veraltet. Für neuen Code solltest du PerformanceNavigationTiming verwenden, abrufbar mit performance.getEntriesByType("navigation"). Dort ist secureConnectionStart ein hochauflösender DOMHighResTimeStamp, der relativ zu performance.timeOrigin gemessen wird. Für einzelne Ressourcen wie Bilder oder Skripte gibt es denselben Wert in PerformanceResourceTiming.

Rückgabewert

Typ
number
Beschreibung
Epochen-Zeitstempel in Millisekunden (unsigned long long) für den Beginn des TLS-Handshakes. Der Wert ist 0, wenn keine sichere Verbindung aufgebaut wurde, wenn eine bestehende Verbindung wiederverwendet wurde oder wenn der Browser den Wert nicht bereitstellt.

Beispiele

TLS-Handshake-Dauer mit der veralteten API messen

window.addEventListener('load', () => {
  const t = performance.timing;
  if (t.secureConnectionStart > 0) {
    const tlsMs = t.connectEnd - t.secureConnectionStart;
    console.log(`TLS-Handshake: ${tlsMs} ms`);
  } else {
    console.log('Keine neue sichere Verbindung (HTTP oder wiederverwendet).');
  }
});
TLS-Handshake: 42 ms

Moderne Alternative: PerformanceNavigationTiming

const [nav] = performance.getEntriesByType('navigation');
if (nav && nav.secureConnectionStart > 0) {
  const tcp = nav.secureConnectionStart - nav.connectStart;
  const tls = nav.connectEnd - nav.secureConnectionStart;
  console.log(`TCP: ${tcp.toFixed(1)} ms, TLS: ${tls.toFixed(1)} ms`);
}
TCP: 18.3 ms, TLS: 39.7 ms

TLS-Zeiten für Drittanbieter-Ressourcen per PerformanceObserver

const observer = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    if (entry.secureConnectionStart > 0) {
      const tls = entry.connectEnd - entry.secureConnectionStart;
      console.log(`${new URL(entry.name).host}: TLS ${tls.toFixed(1)} ms`);
    }
  }
});
observer.observe({ type: 'resource', buffered: true });
cdn.example.com: TLS 27.4 ms

// Wichtig · Fallstricke

  • Veraltet: performance.timing ist nur noch aus Kompatibilitätsgründen vorhanden. Verwende stattdessen PerformanceNavigationTiming. Deren Werte sind hochauflösend und relativ zu timeOrigin, nicht zur Epoche.
  • Der Wert 0 hat mehrere Bedeutungen: 0 kann bedeuten: kein HTTPS, eine wiederverwendete Keep-Alive- oder HTTP/2-Verbindung, eine Antwort aus dem Cache oder dass der Browser den Wert nicht unterstützt. Prüfe den Wert deshalb immer auf > 0, bevor du Differenzen bildest. Sonst entstehen unsinnig große Werte.
  • Ressourcen von fremden Origins: In PerformanceResourceTiming ist der Wert bei Cross-Origin-Ressourcen 0, solange der Server keinen passenden Timing-Allow-Origin-Header sendet.
  • Browser: Ältere Safari-Versionen haben den Wert teilweise nicht geliefert. Heute unterstützen alle gängigen Browser die Eigenschaft, weitere Änderungen sind aber nicht zu erwarten.