window.properties

  • 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();
```复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值