Signatur
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
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).');
}
});
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`);
}
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 });
// Wichtig · Fallstricke
- Veraltet:
performance.timingist nur noch aus Kompatibilitätsgründen vorhanden. Verwende stattdessenPerformanceNavigationTiming. Deren Werte sind hochauflösend und relativ zutimeOrigin, nicht zur Epoche. - Der Wert 0 hat mehrere Bedeutungen:
0kann 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
PerformanceResourceTimingist der Wert bei Cross-Origin-Ressourcen0, solange der Server keinen passendenTiming-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.