Signatur
Beschreibung
PerformanceTiming.redirectEnd gibt einen Zeitstempel in Millisekunden seit der UNIX-Epoche zurück. Er markiert den Moment, in dem das letzte Byte der Antwort auf die letzte HTTP-Weiterleitung (z. B. 301, 302, 307) empfangen wurde. Gab es keine Weiterleitung oder stammt eine davon von einem anderen Ursprung, ist der Wert 0.
Zusammen mit redirectStart lässt sich damit messen, wie viel Ladezeit durch Weiterleitungen verloren geht, etwa bei Umleitungen von http:// auf https:// oder von example.com auf www.example.com. Solche Ketten erhöhen die Zeit bis zum ersten Byte spürbar und sind ein typischer Ansatzpunkt für Optimierungen.
Die Schnittstelle PerformanceTiming (erreichbar über performance.timing) ist veraltet. In neuem Code solltest du stattdessen PerformanceNavigationTiming.redirectEnd verwenden, das du über performance.getEntriesByType("navigation") bekommst. Dort ist der Wert ein hochauflösender DOMHighResTimeStamp, der relativ zu performance.timeOrigin gemessen wird.
Beispiele
Dauer der Weiterleitungen messen (veraltete API)
const { redirectStart, redirectEnd } = performance.timing;
if (redirectEnd > 0) {
console.log(`Weiterleitungen dauerten ${redirectEnd - redirectStart} ms`);
} else {
console.log('Keine (same-origin) Weiterleitung erkannt');
}
Moderne Alternative mit PerformanceNavigationTiming
const [nav] = performance.getEntriesByType('navigation');
if (nav && nav.redirectCount > 0) {
const dauer = nav.redirectEnd - nav.redirectStart;
console.log(`${nav.redirectCount} Weiterleitung(en), ${dauer.toFixed(1)} ms`);
} else {
console.log('Keine Weiterleitung');
}
Fallback-Funktion für Monitoring
const getRedirectTime = () => {
const [nav] = performance.getEntriesByType?.('navigation') ?? [];
if (nav) return nav.redirectEnd - nav.redirectStart;
// Fallback auf die veraltete API
const t = performance.timing;
return t.redirectEnd ? t.redirectEnd - t.redirectStart : 0;
};
window.addEventListener('load', () => {
console.log('Redirect-Zeit:', getRedirectTime(), 'ms');
});
// Wichtig · Fallstricke
- Veraltet:
performance.timingist aus Navigation Timing Level 2 entfernt worden. Browser unterstützen es aus Kompatibilitätsgründen weiter, neuer Code sollte aberPerformanceNavigationTimingverwenden. - Ursprungsübergreifende Weiterleitungen: Kommt auch nur eine Weiterleitung in der Kette von einem anderen Ursprung, ist der Wert aus Datenschutzgründen
0. Der Wert0bedeutet also nicht zwingend „keine Weiterleitung“. - Unterschiedliche Zeitbasis: Der alte Wert ist ein absoluter Epoch-Zeitstempel.
PerformanceNavigationTiming.redirectEndist dagegen relativ zuperformance.timeOrigin. Die beiden Werte darfst du nicht direkt miteinander verrechnen. - Die Genauigkeit ist auf ganze Millisekunden begrenzt. Browser können sie zusätzlich reduzieren, um Timing-Angriffe zu erschweren.