web 性能分析之 performance
window.performance 允许网页访问某些函数来测量网页和 Web 应用程序的性能。
window.performance.timing (PerformanceTiming)
返回一个 Object
,提供了在加载和使用当前页面期间发生的各种事件的性能计时信息。(均为一个无符号 long 型的毫秒数)
1 | PerformanceTiming.navigationStart // 表示从同一个浏览器上下文的上一个文档卸载(unload)结束时的 UNIX 时间戳。如果没有上一个文档,这个值会和 PerformanceTiming.fetchStart 相同 |
常用计算:
DNS 查询耗时 :domainLookupEnd - domainLookupStart
TCP 链接耗时 :connectEnd - connectStart
request 请求耗时 :responseEnd - responseStart
解析 dom 树耗时 : domComplete - domInteractive
白屏时间 :responseStart - navigationStart
domready 时间(用户可操作时间节点) :domContentLoadedEventEnd - navigationStart
onload 时间(总下载时间) :loadEventEnd - navigationStart
window.performance.navigation (PerformanceNavigation)
返回一个 Object,返回前给定浏览上下文中网页导航的类型和重定向次数
1 | PerformanceNavigation.type; // 表示是如何导航到这个页面的,返回值有(0,1,2,255)四种 |
window.performance.memory (memoryInfo)
返回一个 Object,返回量化的脚本内存使用率数字
1 | memoryInfo.jsHeapSizeLimit; // 表示 JS 内存大小限制 |
window.performance.mark(“name”)
在浏览器的性能缓冲区中使用给定名称添加一个 timestamp(时间戳) 。
1 | entryType; // 设置为 "mark". |
window.performance.measure(“name”)
在浏览器性能记录缓存中创建了一个名为时间戳的记录来记录两个特殊标志位(通常称为开始标志和结束标志)。 被命名的时间戳称为一次测量(measure)。
1 | entryType; // 设置为 "measure". |
window.performance.getEntriesByType(“mark”)
获取所有的 type 为”mark”PerformanceEntry 对象数组
window.performance.getEntriesByName(“name”)
获取所有的 name 为”name”的 PerformanceEntry 对象数组
window.performance.clearMarks()
清除所有 mark
window.performance.clearMeasures()
清除所有 measure
window.performance.now()
返回一个 DOMHighResTimeStamp 对象,该对象表示从某一时刻(某一时刻通常是 navigationStart 事件发生时刻)到调用该方法时刻的毫秒数