Start · Sprachen · JavaScript · Referenz · PerformanceTiming.redirectStart

PerformanceTiming.redirectStart

Eigenschaft

Veraltete Nur-Lese-Eigenschaft: Zeitpunkt (ms seit UNIX-Epoch), an dem die erste HTTP-Weiterleitung beim Laden des Dokuments begann, sonst <code>0</code>.

seit JavaScript Veraltet (Navigation Timing Level 1); weiterhin in deprecated seit ja Kategorie: webapi

Signatur

PerformanceTiming.redirectStart

Beschreibung

performance.timing.redirectStart gehört zur alten Navigation-Timing-API (Level 1). Die Eigenschaft liefert den Zeitstempel in Millisekunden seit dem UNIX-Epoch, an dem der Abruf begann, der die erste HTTP-Weiterleitung (z. B. 301 oder 302) ausgelöst hat.

Einen Wert ungleich 0 gibt es nur, wenn es tatsächlich Weiterleitungen gab und alle Weiterleitungen denselben Ursprung wie das Zieldokument haben. Gab es keine Weiterleitung oder war eine davon ursprungsübergreifend, ist der Wert 0.

Zusammen mit redirectEnd kann man damit messen, wie viel Ladezeit durch Weiterleitungsketten verloren geht, etwa beim Wechsel von http:// auf https:// oder beim Anhängen eines Schrägstrichs. Für neuen Code sollte man stattdessen PerformanceNavigationTiming.redirectStart aus performance.getEntriesByType("navigation") nutzen. Dort sind die Werte hochauflösende, relative Zeitstempel (DOMHighResTimeStamp) statt absoluter Epoch-Millisekunden.

Rückgabewert

Typ
number
Beschreibung
Ganzzahliger Zeitstempel in Millisekunden seit dem UNIX-Epoch (IDL-Typ unsigned long long). Er ist 0, wenn keine Weiterleitung stattfand oder eine davon ursprungsübergreifend war.

Beispiele

Dauer der Weiterleitungen messen (veraltete API)

const t = performance.timing;

if (t.redirectStart === 0) {
  console.log('Keine (messbare) Weiterleitung');
} else {
  const dauer = t.redirectEnd - t.redirectStart;
  console.log(`Weiterleitungen dauerten ${dauer} ms`);
}
Weiterleitungen dauerten 142 ms

Moderne Alternative mit PerformanceNavigationTiming

const [nav] = performance.getEntriesByType('navigation');

if (nav && nav.redirectCount > 0 && nav.redirectStart > 0) {
  const dauer = nav.redirectEnd - nav.redirectStart;
  console.log(`${nav.redirectCount} Weiterleitung(en), ${dauer.toFixed(1)} ms`);
} else {
  console.log('Keine gleich-ursprüngliche Weiterleitung');
}
1 Weiterleitung(en), 138.4 ms

Feature-Erkennung mit Rückfall auf die alte API

const redirectDauer = () => {
  const [nav] = performance.getEntriesByType?.('navigation') ?? [];
  if (nav) return nav.redirectEnd - nav.redirectStart;
  const t = performance.timing;
  return t.redirectStart ? t.redirectEnd - t.redirectStart : 0;
};

window.addEventListener('load', () => {
  console.log('Redirect-Zeit:', redirectDauer(), 'ms');
});
Redirect-Zeit: 0 ms

// Wichtig · Fallstricke

  • Veraltet: PerformanceTiming ist in der Spezifikation als veraltet markiert. Die Browser unterstützen es noch, neuer Code sollte aber PerformanceNavigationTiming verwenden.
  • Ursprungsübergreifende Weiterleitungen liefern aus Datenschutzgründen immer 0, zum Beispiel ein Weg von example.com über tracker.net zurück. Ein Wert von 0 bedeutet also nicht sicher, dass es keine Weiterleitung gab.
  • Absolute Zeit: Der Wert ist eine Epoch-Zeit und kein relativer Wert. Man sollte ihn nicht mit performance.now() mischen, sondern nur mit anderen performance.timing-Feldern verrechnen.
  • Die Eigenschaft ist nur im Fenster-Kontext verfügbar, nicht in Web Workern.