Start · Sprachen · JavaScript · Referenz · PerformanceTiming.redirectEnd

PerformanceTiming.redirectEnd

Eigenschaft

Veraltete, schreibgeschützte Eigenschaft: Zeitpunkt (ms seit UNIX-Epoche), zu dem das letzte Byte der Antwort der letzten HTTP-Weiterleitung empfangen wurde, sonst <code>0</code>.

seit JavaScript Veraltet (Navigation Timing Level 1) – in allen Br deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.redirectEnd

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');
}
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');
}
2 Weiterleitung(en), 143.7 ms

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');
});
Redirect-Zeit: 0 ms

// Wichtig · Fallstricke

  • Veraltet: performance.timing ist aus Navigation Timing Level 2 entfernt worden. Browser unterstützen es aus Kompatibilitätsgründen weiter, neuer Code sollte aber PerformanceNavigationTiming verwenden.
  • Ursprungsübergreifende Weiterleitungen: Kommt auch nur eine Weiterleitung in der Kette von einem anderen Ursprung, ist der Wert aus Datenschutzgründen 0. Der Wert 0 bedeutet also nicht zwingend „keine Weiterleitung“.
  • Unterschiedliche Zeitbasis: Der alte Wert ist ein absoluter Epoch-Zeitstempel. PerformanceNavigationTiming.redirectEnd ist dagegen relativ zu performance.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.