performance监测网页性能数据

一般我们可以通过浏览器的调试工具-网络面板,或者代理工具查看网页加载过程中的各个阶段的耗时。而利用window.performance属性则可以获得更为精确的原始数据,以毫秒为单位,精确到微秒。
这里写图片描述

属性说明:

navigationStart:浏览器处理当前网页的启动时间
fetchStart:浏览器发起http请求读取文档的毫秒时间戳。
domainLookupStart:域名查询开始时的时间戳。
domainLookupEnd:域名查询结束时的时间戳。
connectStart:http请求开始向服务器发送的时间戳。
connectEnd:浏览器与服务器连接建立(握手和认证过程结束)的毫秒时间戳。
requestStart:浏览器向服务器发出http请求时的时间戳。或者开始读取本地缓存时。
responseStart:浏览器从服务器(或读取本地缓存)收到第一个字节时的时间戳。
responseEnd:浏览器从服务器收到最后一个字节时的毫秒时间戳。
domLoading:浏览器开始解析网页DOM结构的时间。
domInteractive:网页dom树创建完成,开始加载内嵌资源的时间。
domContentLoadedEventStart:网页DOMContentLoaded事件发生时的时间戳。
domContentLoadedEventEnd:网页所有需要执行的脚本执行完成时的时间,domReady的时间。
domComplete:网页dom结构生成时的时间戳。
loadEventStart:当前网页load事件的回调函数开始执行的时间戳。
loadEventEnd:当前网页load事件的回调函数结束运行时的时间戳。

(function() {

    handleAddListener('load', getTiming)

    function handleAddListener(type, fn) {
        if(window.addEventListener) {
            window.addEventListener(type, fn)
        } else {
            window.attachEvent('on' + type, fn)
        }
    }

    function getTiming() {
        try {
            var time = performance.timing;
            var timingObj = {};

            var loadTime = (time.loadEventEnd - time.loadEventStart) / 1000;

            if(loadTime < 0) { setTimeout(function() { getTiming(); }, 200); return; }

            timingObj['重定向时间'] = (time.redirectEnd - time.redirectStart) / 1000;
            timingObj['DNS解析时间'] = (time.domainLookupEnd - time.domainLookupStart) / 1000;
            timingObj['TCP完成握手时间'] = (time.connectEnd - time.connectStart) / 1000;
            timingObj['HTTP请求响应完成时间'] = (time.responseEnd - time.requestStart) / 1000;
            timingObj['DOM开始加载前所花费时间'] = (time.responseEnd - time.navigationStart) / 1000;
            timingObj['DOM加载完成时间'] = (time.domComplete - time.domLoading) / 1000;
            timingObj['DOM结构解析完成时间'] = (time.domInteractive - time.domLoading) / 1000;
            timingObj['脚本加载时间'] = (time.domContentLoadedEventEnd - time.domContentLoadedEventStart) / 1000;
            timingObj['onload事件时间'] = (time.loadEventEnd - time.loadEventStart) / 1000;
            timingObj['页面完全加载时间'] = (timingObj['重定向时间'] + timingObj['DNS解析时间'] + timingObj['TCP完成握手时间'] + timingObj['HTTP请求响应完成时间'] + timingObj['DOM结构解析完成时间'] + timingObj['DOM加载完成时间']);

            for(item in timingObj) { console.log(item + ":" + timingObj[item] + '毫秒(ms)'); }

            console.log(performance.timing);

        } catch(e) {
            console.log(timingObj)
            console.log(performance.timing);
        }
    }
})();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bpf性能工具是一款非常强大的性能监测工具,它基于eBPF技术,可以在内核态运行,实时分析系统的性能指标。bpf性能工具的主要功能包括:内存分析、事件跟踪、堆栈跟踪、性能调优、网络分析等。其核心思想是在不影响系统性能的情况下,能够对系统进行实时、高效的监测和分析。 bpf性能工具的使用需要掌握一定的知识和技能,包括eBPF技术的原理和应用、内核调试技术、Python编程等。为了帮助人们更好地使用bpf性能工具,有专门的pdf文档提供详细的介绍和实践案例。该文档由brendan gregg编写,内容涵盖了bpf性能工具的使用方法、优化技巧、调试方法等方面。 使用bpf性能工具可以帮助我们更精细地监测和优化系统性能,提高应用的响应速度和稳定性。同时,bpf性能工具也可以帮助我们更好地理解系统内部的运行机制和性能瓶颈,从而指导我们进行更合理有效的性能优化。 ### 回答2: BPF Performance Tools是一本介绍了Linux中基于eBPF(Berkeley Packet Filter)的性能分析工具的书籍。它主要介绍了如何使用eBPF和BPF指令编写高效的性能跟踪和调试工具。 书籍中的内容分为两部分:第一部分介绍了eBPF的基本知识,包括BPF的历史、架构、功能和优点。第二部分详细介绍了各种性能分析工具的使用方法、原理和示例,例如bpftrace、perf、ebpf_exporter等。 使用eBPF和BPF指令编写高效的性能分析工具可以帮助我们更好的理解系统的行为和瓶颈,并提高其性能。同时,通过学习这些工具的使用方法和原理,也可以提高我们对系统性能问题的分析技能和解决能力。 总的来说,BPF Performance Tools是一本非常实用的书籍,对于从事Linux系统性能分析和调优工作的人员来说,是一本不可或缺的工具书。 ### 回答3: "BPF Performance Tools"是一本介绍BPF工具性能的书籍。它涵盖了BPF的历史,基本概念,运行时系统和使用BPF工具进行性能调优的实际案例。 BPF是一个高效的内核虚拟机,允许用户将代码插入到内核的各种地方来监测和分析系统的行为。该书详细介绍了BPF的原理和使用方法,从而让读者更好地理解BPF工具的工作原理。 该书对于系统管理员、运维工程师、开发人员和安全专家都是有用的。它提供了一系列实用的工具,包括tcpdump、perf、strace等,以及用户自定义的BPF程序。这些工具可以帮助用户快速定位系统性能瓶颈、调试网络问题和优化应用程序等。 此外,该书还介绍了常用的关键性能指标,并提供了解析性能数据的详细步骤和技巧。通过这些内容,读者能够更好地利用BPF工具进行系统调优和优化。 总之,"BPF Performance Tools"是一本极具实用价值和深度的书籍,它为读者提供了丰富的知识和技能,有助于提升系统性能和开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值