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

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.lryc.cn/news/465067.html

相关文章:

  • 教你不用下载 maven,不用配置环境变量,在 idea 上创建 maven 项目
  • linux 设置tomcat开机启动
  • opencv出错以及解决技巧
  • Python爬虫进阶(实战篇一)
  • 运维面试题(2)
  • Django CSRF Token缺失或不正确
  • 10.12Python数学基础-矩阵(下)
  • vue网络自学知识点汇总
  • Springboot项目Activemq延迟自定义消息完整代码案例(亲测可用)
  • 常见ElasticSearch 面试题解析(上)
  • 训练VLM(视觉语言模型)的经验
  • 犬儒乐队热歌《阶梯》主观
  • 多模态大语言模型(MLLM)-Blip3/xGen-MM
  • flutter TabBar自定义指示器(带文字的指示器、上弦弧形指示器、条形背景指示器、渐变色的指示器)
  • 【Fargo】9:模拟图片采集的内存泄漏std::bad_alloc
  • c# 前端无插件打印导出实现方式
  • 数组的初始化,参数传递,和求和
  • 初始JavaEE篇——多线程(1):Thread类的介绍与使用
  • 基于单片机的LED照明自动控制系统的设计
  • C语言——头文件的使用
  • LeetCode 精选 75 回顾
  • 【Unity - 屏幕截图】技术要点
  • 句句深刻,字字经典,创客匠人老蒋金句出炉,哪一句让你醍醐灌顶?
  • 柯尼卡美能达CA-310 FPD色彩分析仪
  • 二维EKF的MATLAB代码
  • 大数据治理:数据时代的挑战与应对
  • 绿联NAS免驱安装MacOS
  • 聊聊ASSERT处理在某些场景下的合理用法
  • SAP Odata 服务
  • 【java数据结构】栈