91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PerformanceObserver如何自動獲取首屏時間

發布時間:2022-07-06 14:16:58 來源:億速云 閱讀:248 作者:iii 欄目:開發技術

這篇“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如何自動獲取首屏時間”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    普兰店市| 阿坝| 贵南县| 修武县| 镇沅| 宁城县| 南岸区| 蓝田县| 株洲县| 余江县| 嘉兴市| 瓮安县| 丹江口市| 锡林浩特市| 台南市| 普格县| 平顺县| 海原县| 响水县| 景泰县| 通许县| 宜川县| 龙江县| 揭西县| 荃湾区| 安丘市| 河北区| 宁都县| 海盐县| 泰和县| 无锡市| 义马市| 淄博市| 金坛市| 东乌珠穆沁旗| 易门县| 贵德县| 荔波县| 新蔡县| 霍林郭勒市| 桦川县|