Signatur
Beschreibung
Die schreibgeschützte Eigenschaft redirectCount eines PerformanceNavigationTiming-Eintrags gibt an, wie viele HTTP-Weiterleitungen (z. B. 301, 302, 307, 308) vor dem Laden des aktuellen Dokuments durchlaufen wurden. Gezählt wird ab der letzten Navigation ohne Weiterleitung im aktuellen Browsing-Kontext.
In der Praxis braucht man den Wert beim Real User Monitoring (RUM): Jede Weiterleitung kostet mindestens einen zusätzlichen Roundtrip und verzögert damit Time to First Byte und alle folgenden Messwerte. Mit redirectCount zusammen mit redirectStart und redirectEnd findet man unnötige Weiterleitungsketten, etwa http → https → www → /de/.
Den Eintrag bekommt man über performance.getEntriesByType("navigation")[0] oder über einen PerformanceObserver mit dem Typ "navigation". Die Eigenschaft ersetzt das veraltete performance.navigation.redirectCount aus Navigation Timing Level 1.
Rückgabewert
0, wenn es keine Weiterleitung gab oder wenn mindestens eine Weiterleitung auf einen anderen Ursprung ging (Same-Origin-Regel).Beispiele
Anzahl der Weiterleitungen auslesen
const [nav] = performance.getEntriesByType("navigation");
if (nav) {
console.log(`Weiterleitungen: ${nav.redirectCount}`);
}
Weiterleitungskosten mit PerformanceObserver messen
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
const redirectTime = entry.redirectEnd - entry.redirectStart;
console.log({
anzahl: entry.redirectCount,
dauerMs: Math.round(redirectTime)
});
}
});
// buffered: true liefert auch den bereits erzeugten Navigationseintrag
observer.observe({ type: "navigation", buffered: true });
RUM: Weiterleitungsketten an den Server melden
window.addEventListener("load", () => {
const [nav] = performance.getEntriesByType("navigation");
if (!nav || nav.redirectCount < 2) return;
const payload = JSON.stringify({
url: location.href,
redirectCount: nav.redirectCount,
redirectMs: nav.redirectEnd - nav.redirectStart,
ttfb: nav.responseStart - nav.startTime
});
// sendBeacon funktioniert auch, wenn die Seite gleich verlassen wird
navigator.sendBeacon("/rum/redirects", payload);
});
// Wichtig · Fallstricke
- Same-Origin-Einschränkung: Ging irgendeine Weiterleitung der Kette auf einen anderen Ursprung (z. B.
http://→https://oder eine andere Domain), ist der Wert aus Datenschutzgründen0. Dann sind auchredirectStartundredirectEnd0. Ein Wert von0heißt also nicht sicher, dass es keine Weiterleitung gab. - Gezählt werden nur HTTP-Weiterleitungen. Clientseitige Umleitungen per
location.href,<meta http-equiv=\"refresh\">oder SPA-Routing werden nicht erfasst. - Es gibt pro Dokument genau einen Navigationseintrag. Bei Navigationen innerhalb einer Single-Page-App ändert sich der Wert nicht.
- Das veraltete
performance.navigation.redirectCountist als deprecated markiert und sollte nicht mehr verwendet werden. - Kompatibilität: wird von allen aktuellen Browsern unterstützt, in Safari erst ab Version 15. In Web Workern steht der Navigationseintrag nicht zur Verfügung.