当前位置: 首页 > article >正文

performance.timing

performance.timing 是 Web 性能 API 的一部分,用于获取页面加载过程中的各个时间戳。这些时间戳可以帮助开发者分析页面加载性能,找出潜在的瓶颈。performance.timing 返回一个 PerformanceTiming 对象,该对象包含了多个属性,每个属性代表页面加载过程中的某个特定事件的时间戳。

以下是一些常用的 performance.timing 属性及其含义:

  • navigationStart: 页面导航开始的时间戳。
  • unloadEventStart: 卸载前一个页面的事件开始时间。
  • unloadEventEnd: 卸载前一个页面的事件结束时间。
  • redirectStart: 第一个重定向开始的时间。
  • redirectEnd: 最后一个重定向结束的时间。
  • fetchStart: 浏览器开始获取文档的时间。
  • domainLookupStart: DNS 查询开始的时间。
  • domainLookupEnd: DNS 查询结束的时间。
  • connectStart: TCP 连接开始的时间。
  • connectEnd: TCP 连接结束的时间。
  • secureConnectionStart: 安全连接开始的时间(仅 HTTPS)。
  • requestStart: 浏览器向服务器发送请求的时间。
  • responseStart: 浏览器从服务器接收第一个字节的时间。
  • responseEnd: 浏览器从服务器接收最后一个字节的时间。
  • domLoading: 解析器开始解析 DOM 的时间。
  • domInteractive: DOM 解析完成,但资源(如图片、样式表)可能仍在加载的时间。
  • domContentLoadedEventStartDOMContentLoaded 事件开始的时间。
  • domContentLoadedEventEndDOMContentLoaded 事件结束的时间。
  • domComplete: DOM 和所有子资源都已完全加载的时间。
  • loadEventStartload 事件开始的时间。
  • loadEventEndload 事件结束的时间。

示例代码

以下是一个简单的示例,展示如何使用 performance.timing 获取页面加载时间:

// 获取 PerformanceTiming 对象
const timing = performance.timing;

// 计算页面加载时间
const loadTime = timing.loadEventEnd - timing.navigationStart;

console.log(`Page load time: ${loadTime} ms`);

// 计算 DNS 查找时间
const dnsLookupTime = timing.domainLookupEnd - timing.domainLookupStart;

console.log(`DNS lookup time: ${dnsLookupTime} ms`);

// 计算 TCP 连接时间
const tcpConnectTime = timing.connectEnd - timing.connectStart;

console.log(`TCP connect time: ${tcpConnectTime} ms`);

// 计算请求响应时间
const responseTime = timing.responseEnd - timing.requestStart;

console.log(`Response time: ${responseTime} ms`);

// 计算 DOMContentLoaded 事件时间
const domContentLoadedTime = timing.domContentLoadedEventEnd - timing.domContentLoadedEventStart;

console.log(`DOMContentLoaded event time: ${domContentLoadedTime} ms`);

注意事项

  1. 兼容性performance.timing 在大多数现代浏览器中都是支持的,但在一些较旧的浏览器中可能不可用。
  2. 隐私: 由于 performance.timing 可以用于精确测量网络请求的时间,可能会引发隐私问题。因此,某些浏览器可能会限制或修改这些时间戳,以防止指纹识别攻击。
  3. 废弃警告performance.timing 的某些属性在未来的浏览器版本中可能会被废弃,建议使用 PerformanceNavigationTiming 接口来获取更详细的性能数据。

替代方案

如果你需要更详细和准确的性能数据,可以考虑使用 PerformanceObserverPerformanceNavigationTiming 接口:

new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(entry.name, entry.startTime, entry.duration);
  });
}).observe({ entryTypes: ['navigation'] });

这将提供更丰富的性能数据,并且更加符合现代 Web 性能测量的最佳实践。


http://www.kler.cn/news/359903.html

相关文章:

  • OpenCV坐标系统与图像处理案例
  • ActivationType, Pool, ModelType(helpers文件中的classes.py)
  • vuetify学习笔记(v-app和v-responsive)
  • 【算法】---栈与队列基础
  • 基于微信小程序的电影交流平台
  • RHCE作业1
  • QT模块--GUI和QtWidgets
  • Rust语言编程环境的安装
  • Codeforces Round 980 (Div. 2) A ~ D
  • 小程序将图片转换成base64格式
  • Mysql-事务(Transaction)详解
  • pod相关面试题总结(持续更新)
  • 【ARM】ARM架构参考手册_Part A CPU(1)
  • 【BUG】解决已安装anaconda的pycharm中jupyter服务器中出现的import jieba失败问题
  • SpringBoot启动报错java.nio.charset.MalformedInputException: Input length =1
  • SAP揭秘者-怎么查看SAP 版本及S4 HANA的版本
  • 开启RefCell debug_refcell feature查看借用冲突位置
  • PCL 基于中值距离的点云对应关系
  • linux模拟:chrony同步时间
  • 信创:推动信息技术应用创新的国产化之路