最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端性能分析 " Performance API "

    正文概述 掘金(北风丶)   2021-06-11   562
    定义

    Performance 接口可以获取到当前页面中与性能相关的信息。它是 High Resolution Time API 的一部分,同时也融合了 Performance Timeline APINavigation Timing APIUser Timing APIResource Timing API

    Performance API
    MDN Web docs描述
    Resource Timing API获取和分析应用资源加载的详细网络计时数据Navigation_timing_API提供了可用于衡量一个网站性能的数据Performance支持应用程序中客户端的延时测量Performance_Timeline提供了可用于衡量一个应用程序的客户端延时的数据User_Timing_API允许开发者在浏览器性能时间线中创建针对特定应用的时间戳Frame_Timing_API提供有关浏览器事件循环的帧计时数据Network_Information_API可以获取到系统的网络连接信息,应用程序可以根据此信息为用户展现不同清晰度的内容
    Navigation Timing: Processing Model
    1. Navigation Timing Level 1

    前端性能分析 " Performance API "

    1. Navigation Timing Level 2

    前端性能分析 " Performance API "

    • 上一个文档卸载
    • 重定向
    • 浏览器准备好使用http抓取文档
    • 检查本地缓存
    • 查询DNS域名
    • TCP建立连接
    • HTTP请求、响应
    • 渲染DOM树并解析
    • 网页开始加载资源
    • 准备就绪触发load事件执行回调函数

    性能上报

    前端性能分析 " Performance API "

    // onload事件触发 - 等待1s - 上报性能
    var page = windows.performance.timing
    dns = page.domainLookupEnd - page.domainLookupStart
    tcp = page.connectEnd - page.connectStart
    // 请求返回时长
    connectTime = page.responseEnd - page.requestStart
    // 服务端响应时长
    responseTime = page.responseEnd - page.responseStart
    domAnalysis = page.domComplete - page.domInteractive
    // 页面白屏时长
    whitePageTime = page.responseStart - page.navigationStart
    // Dom渲染时长
    domReady = page.domContentLoadedEventEnd - page.navigationStart
    // 页面加载所需的总时长
    allLoadTime = page.loadEventEnd - page.navigationStart
    
    PerformanceNavigation (将废弃)

    属性

    1. redirectCount: 如果有重定向的话,页面通过几次重定向跳转而来
    2. type
    type描述
    0即 TYPE_NAVIGATENEXT 正常进入的页面(非刷新、非重定向等)1即 TYPE_RELOAD 通过 window.location.reload() 刷新的页面2即 TYPE_BACK_FORWARD 通过浏览器的前进后退按钮进入的页面(历史记录)255即 TYPE_UNDEFINED 非以上方式进入的页面
    方法
    1. Performance.getEntries()
    2. Performance.getEntriesByType()
    3. Performance.getEntriesByName()
    4. performance.now() 精准计算程序运行时间
    mark、measures 计算程序时间
    1. performance.mark() 标记各种时间戳,进行打点
    2. performance.measure() 测量
    3. performance.clearMarks() 清除打点
    4. performance.clearMeasures() 清除测量数据
    function randomFunc (n) {  
        if (!n) {
            // 生成一个随机数
            n = ~~(Math.random() * 10000);
        }
        var nameStart = 'markStart' + n; 
        var nameEnd   = 'markEnd' + n; 
        // 函数执行前做个标记
        window.performance.mark(nameStart);
     
        for (var i = 0; i < n; i++) {
            // do nothing
        }
     
        // 函数执行后再做个标记
        window.performance.mark(nameEnd);
     
        // 然后测量这个两个标记间的时间距离,并保存起来
        var name = 'measureRandomFunc' + n;
        window.performance.measure(name, nameStart, nameEnd);
    }
     
    // 执行三次看看
    randomFunc();  
    randomFunc();  
    // 指定一个名字
    randomFunc(888);
    
    // 看下保存起来的标记 mark
    window.performance.getEntriesByType('mark')
    
    // 看下保存起来的测量 measure
    window.performance.getEntriesByType('measure');
    
    // 清除指定标记
    window.performance.clearMarks('markStart888');  
    // 清除所有标记
    window.performance.clearMarks();
     
    // 清除指定测量
    window.performance.clearMeasures('measureRandomFunc');  
    // 清除所有测量
    window.performance.clearMeasures(); 
    
    
    
    参考文章
    1. 初探 performance – 监控网页与程序性能
    2. 获取页面加载各个阶段所需时间
    3. Navigation Timing Level 2

    下载网 » 前端性能分析 " Performance API "

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元