文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PerformanceObserver如何自动获取首屏时间

2023-07-02 15:48

关注

这篇“PerformanceObserver如何自动获取首屏时间”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PerformanceObserver如何自动获取首屏时间”文章吧。

介绍

PerformanceObserver 可用于获取性能相关的数据,例如首帧fp首屏fcp首次有意义的绘制 fmp等等。

构造函数

PerformanceObserver() 创建并返回一个新的 PerformanceObserver 对象。

提供的方法

PerformanceObserver.observe()

当记录的性能指标在指定的 entryTypes 之中时,将调用性能观察器的回调函数。

PerformanceObserver.disconnect()

停止性能观察者回调接收到性能指标。

PerformanceObserver.takeRecords()

返回存储在性能观察器中的性能指标的列表,并将其清空。

重点我们看看observer.observe(options);

options

一个只装了单个键值对的对象,该键值对的键名规定为 entryTypes。entryTypes 的取值要求如下:

entryTypes 的值:一个放字符串的数组,字符串的有效值取值在性能条目类型 中有详细列出。如果其中的某个字符串取的值无效,浏览器会自动忽略它。

另:若未传入 options 实参,或传入的 options 实参为空数组,会抛出 TypeError。

实例

<script>const observer = new PerformanceObserver((list) => {for(const entry of list.getEntries()){console.groupCollapsed(entry.name);console.log(entry.entryType);console.log(entry.startTime);console.log(entry.duration);console.groupEnd(entry.name);}})observer.observe({entryTypes:['longtask','frame','navigation','resource','mark','measure','paint']});</script>

获取结果

PerformanceObserver如何自动获取首屏时间

根据打印结果我们可以推测出来:

entryTypes里的值其实就是我们告诉PerformanceObserver,我们想要获取的某一方面的性能值。例如传入paint,就是说我们想要得到fcp和fp。

所以我们看打印,它打印出来了fp和fcp

PerformanceObserver如何自动获取首屏时间

这里有必要解释一下什么是fp,fcp,fpm

TTFB:Time To First Byte,首字节时间

FP:First Paint,首次绘制,绘制Body

FCP:First Contentful Paint,首次有内容的绘制,第一个dom元素绘制完成

FMP:First Meaningful Paint,首次有意义的绘制

TTI:Time To Interactive,可交互时间,整个内容渲染完成

不懂?看图!

PerformanceObserver如何自动获取首屏时间

FP仅有一个div根节点

FCP包含页面的基本框架,但没有数据内容

FMP包含页面的所有元素及数据

Wow!恍然大悟!

实际使用

好了,我们在实际项目中怎么取获取呢?可以看看我的实现参考一下下:

  // 使用 PerformanceObserver 监听 fcp  if (!!PerformanceObserver){    try {      const type = 'paint';      if ((PerformanceObserver.supportedEntryTypes || []).includes(type)) {        observer = new PerformanceObserver((entryList)=&gt;{          for(const entry of entryList.getEntriesByName('first-contentful-paint')){            const { startTime } = entry;            console.log('[assets-load-monitor] PerformanceObserver fcp:', startTime);            // 上报startTime操作          }        });        observer.observe({          entryTypes: [type],        });        return;      }    } catch (e) {      // ios 不支持这种entryTypes,会报错 https://caniuse.com/?search=PerformancePaintTiming      console.warn('[assets-load-monitor] PerformanceObserver error:', (e || {}).message ? e.message : e);    }  }

这里用了判断是否可以使用PerformanceObserver,不能使用的话,我们是用其他方法的,例如MutationObserver,这个我们我们后面再讲。

以上就是关于“PerformanceObserver如何自动获取首屏时间”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯