-
performance.memory
jsHeapSizeLimit js内存使用大小限制 totalJSHeapSize js总内存 usedJSHeapSize js已使用内存 复制代码
注:
usedJSHeapSize表示所有被使用的js堆栈内存;
totalJSHeapSize表示当前js堆栈内存总大小,这表示usedJSHeapSize不能大于totalJSHeapSize,如果大于,有可能出现了内存泄漏。
-
performance.navigation
-
performance.navigation.type
一个无符号短整型,表示是如何导航到这个页面的 对象提供了在指定的时间段里发生的操作相关信息,包括页面是加载还是刷新、发生了多少次重定向等等。 复制代码
TYPE_NAVIGATE (0)
当前页面是通过点击链接,书签和表单提交,或者脚本操作,或者在url中直接输入地址,type值为0 复制代码
TYPE_RELOAD (1)
点击刷新页面按钮或者通过Location.reload()方法显示的页面,type值为1 复制代码
TYPE_BACK_FORWARD (2)
页面通过历史记录和前进后退访问时。type值为2 复制代码
TYPE_RESERVED (255)
任何其他方式,type值为255 复制代码
-
performance.redirectCount
重定向次数 复制代码
-
-
performance.timing
对象包含延迟相关的性能信息。 复制代码
属性 含义 -- navigationStart 准备加载新页面的起始时间 unloadEventStart 如果前一个网页与当前网页属于同一个域名,则返回前一个网页的unload事件发生时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0。 unloadEventEnd 如果前一个网页与当前网页属于同一个域名,则返回前一个网页unload事件的回调函数结束时的Unix毫秒时间戳。如果没有前一个网页,或者之前的网页跳转不是在同一个域名内,则返回值为0。 redirectStart 如果发生了HTTP重定向,并且从导航开始,中间的每次重定向,都和当前文档同域的话,就返回开始重定向的timing.fetchStart的值。其他情况,则返回0 重定向开始 redirectEnd 如果发生了HTTP重定向,并且从导航开始,中间的每次重定向,都和当前文档同域的话,就返回最后一次重定向,接收到最后一个字节数据后的那个时间.其他情况则返回0 重定向结束 fetchStart 如果一个新的资源获取被发起,则fetchStart必须返回用户代理开始检查其相关缓存的那个时间,其他情况则返回开始获取该资源的时间 domainLookupStart 返回用户代理对当前文档所属域进行DNS查询开始的时间。如果此请求没有DNS查询过程,如长连接,资源cache,甚至是本地资源等。 那么就返回 fetchStart的值 domainLookupEnd 返回用户代理对结束对当前文档所属域进行DNS查询的时间。如果此请求没有DNS查询过程,如长连接,资源cache,甚至是本地资源等。那么就返回 fetchStart的值 connectStart 返回用户代理向服务器服务器请求文档,开始建立连接的那个时间,如果此连接是一个长连接,又或者直接从缓存中获取资源(即没有与服务器建立连接)。则返回domainLookupEnd的值 (secureConnectionStart) 可选特性。用户代理如果没有对应的东东,就要把这个设置为undefined。 如果有这个东东,并且是HTTPS协议,那么就要返回开始SSL握手的那个时间。 如果不是HTTPS, 那么就返回0 connectEnd 返回用户代理向服务器服务器请求文档,建立连接成功后的那个时间,如果此连接是一个长连接,又或者直接从缓存中获取资源(即没有与服务器建立连接)。则返回domainLookupEnd的值 requestStart 返回从服务器、缓存、本地资源等,开始请求文档的时间 responseStart 返回用户代理从服务器、缓存、本地资源中,接收到第一个字节数据的时间 responseEnd 返回用户代理接收到最后一个字符的时间,和当前连接被关闭的时间中,更早的那个。同样,文档可能来自服务器、缓存、或本地资源 domLoading 返回用户代理把其文档的 "current document readiness" 设置为 "loading"的时候 domInteractive 返回用户代理把其文档的 "current document readiness" 设置为 "interactive"的时候. domContentLoadedEventStart 返回文档发生 DOMContentLoaded事件的时间 domContentLoadedEventEnd 文档的DOMContentLoaded 事件的结束时间 domComplete 返回用户代理把其文档的 "current document readiness" 设置为 "complete"的时候 loadEventStart 文档触发load事件的时间。如果load事件没有触发,那么该接口就返回0 loadEventEnd 文档触发load事件结束后的时间。如果load事件没有触发,那么该接口就返回0 DNS时间 = domainLookupEnd - domainLookupStart
TCP时间 = connectEnd - connectStart
后端时间 = responseEnd - connectEnd后端时间计算出来有可能是负值 IOS设备通过浏览器的前进后退按钮进入的页面,Navigation Timing API数据中connectStart,responseEnd等数据可能为0或者是一个比较小的数值,并不是对应时间点的时间戳。 IOS设备通过缓存读取页面时,Navigation Timing的计算与安卓实现不一致。 复制代码
白屏时间 = domInteractive - navigationStart
整屏时间 = loadEventEnd - navigationStart
首屏时间 = (dom解析完毕 && 所有首屏图片加载完毕 )- navigationStart解析dom树耗时 = domComplete - domInteractive
request请求耗时 = responseEnd - responseStart -
performance.now()
performance.now方法返回当前网页自从performance.timing.navigationStart到当前时间之间的微秒数(毫秒的千分之一)。也就是说,它的精度可以达到100万分之一秒。 复制代码
<!--通过两次调用performance.now方法,可以得到间隔的准确时间,用来衡量某种操作的耗时。--> var start = performance.now(); doTasks(); var end = performance.now(); console.log('耗时:' + (end - start) + '微秒。'); 复制代码
-
performance.mark()
mark方法用于为相应的视点做标记。 使用 performance.mark() 也可以精确计算程序执行时间 复制代码
function () { if (this.cstmIdList.length == 0) { this.customerGet() } this.linker = JSON.parse(JSON.stringify(row)) window.performance.mark(this.linker) this.linker.originCstmId = this.linker.cstmId if(this.$refs['linker'] !== undefined){ this.$refs['linker'].clearValidate() } this.disabled = true if(row.mainStatus == 1){ this.disabledMainStatus = true } this.dialogTitle = '编辑联系人信息' this.btnStr = '更新' this.dialogShow = true window.performance.mark(this.dialogShow) let mark = window.performance.getEntriesByType('mark') console.log(mark) // 测量 window.performance.measure(this.dialogShow) var measure = window.performance.getEntriesByType('measure') console.log(measure) } 复制代码
结束时间为: 6006.250000000001
开始时间为:6006.205000000001
执行时间为:6006.250000000001 – 6006.205000000001 = 0.045
```
// 清除指定标记
window.performance.clearMarks('mark');
// 清除所有标记
window.performance.clearMarks();
// 清除指定测量
window.performance.clearMeasures('measure');
// 清除所有测量
window.performance.clearMeasures();
```复制代码