PerformanceNavigationTiming:redirectCount 属性

redirectCount 只读属性返回一个数字,表示自当前浏览上下文中的上次非重定向导航以来重定向的次数。

页面重定向次数越多,页面加载时间就越长。为了提高网页性能,请避免多次重定向。

可以使用 redirectStartredirectEnd 属性来测量重定向时间。请注意,它们将针对跨源重定向返回0

请注意,此处不考虑客户端重定向,例如<meta http-equiv="refresh" content="0; url=https://example.com/">

redirectCount 属性可以具有以下值

  • 表示自当前浏览上下文中的上次非重定向导航以来重定向次数的数字。
  • 如果重定向是跨源的,则为0

示例

记录带有重定向的条目

redirectCount 属性可用于检查是否存在一个或多个重定向。如果可用,我们将记录条目的名称和重定向时间。

使用 PerformanceObserver 的示例,它会在浏览器性能时间轴中记录新的navigation 性能条目时发出通知。使用buffered 选项访问观察器创建之前的条目。

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    const name = entry.name;
    const redirectCount = entry.redirectCount;
    const redirectTime = entry.redirectEnd - entry.redirectStart;
    if (redirectCount > 0) {
      console.log(`${name}: Redirect count: ${redirectCount}`);
      if (redirectTime > 0) {
        console.log(`${name}: Redirect time: ${redirectTime}ms`);
      }
    }
  });
});

observer.observe({ type: "navigation", buffered: true });

使用 Performance.getEntriesByType() 的示例,它仅显示在调用此方法时浏览器性能时间轴中存在的navigation 性能条目

js
const entries = performance.getEntriesByType("navigation");
entries.forEach((entry) => {
  const name = entry.name;
  const redirectCount = entry.redirectCount;
  const redirectTime = entry.redirectEnd - entry.redirectStart;
  if (redirectCount > 0) {
    console.log(`${name}: Redirect count: ${redirectCount}`);
    if (redirectTime > 0) {
      console.log(`${name}: Redirect time: ${redirectTime}ms`);
    }
  }
});

规范

规范
导航计时级别 2
# dom-performancenavigationtiming-redirectcount

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅