ページの最初のスクリーン時間を正確かつ自動化
3810 ワード
最初のスクリーン時間を自動的に取得する方法
作者:劉遠洋
会社:マイクロショップ-フロントエンドチーム
日付:2018-03-05
本文はマイクロショップのフロントエンドチームblogに発表します
背景
フロントエンド性能データの取得方法では、現在、業界内では手動で点を埋める方法が多く使用されている.すなわち、コードでは、ヘッダが完了した位置を手動で判断し、そこにヘッダ記録のコードを追加する.
このようにするのは簡単で手間が省けますが、欠点も明らかです.
上記の分析に基づいて、私たちは最近いくつかの方案を試みて、最初のスクリーンの時間計算を自動化して、人力を節約して、そして正確性を高めることを試みました.
定義#テイギ#
最初のスクリーン時間の定義は、企業ごとに異なる場合があります.この文書では、最初のスクリーン時間とは、次のことを指します.
= - window.performance.timing.navigationStart
= dom - window.performance.timing.navigationStart
実装の原理
全体的な考え方は次のとおりです.
次に、上記の問題を1つずつ解決します.
firstscreen.report()
の期間内に発行されたと考えられています.[ xhr , xhr + 1000ms]
は、ページがデータを受信した後にレンダリングが完了することを保証する(300 msは1回のレンダリングに十分である).T1 = T1 + 300ms
のimg
が変化したり、要素のsrc
が変化したりして、MutationObserverでのコールバックをトリガーすることはなく、統計的なミスを招くため、現在のスキームはMutationObserverとsetIntervalを組み合わせて、MutationObserverのコールバックの合間にsetIntervalを起動し、ページのロード中にドット間隔が長すぎないことを保証し、統計精度を高めます.とうけいてきごさ
上記の複雑な打点と判断を用いても誤差は依然として存在するが,誤差はいったいどこにあるのか.
次の図に示します.
(1 images) 2(2 images) 1(2 images)
| | |
|________________________|_______________________|
t1 t2 t3
上記の理論によれば、
background-image
時刻をヘッダ画面を統計できる時刻、2枚のピクチャのロードが完了した時刻、すなわちヘッダ画面が完了した時刻とする.t2
とt2
の時刻差は1枚の画像です.我々の理論によれば、ヘッダスクリーンの完了時間は、t 2の後のある時点
t1
にあるに違いない.実際に異なる画像は、いつロードが完了したのか、
t2.n
前にロードが完了したのか、リクエストが発行されたのか分からないが、まだロードが完了していない.誤差はここにあります.それはいつも存在します.
しかし、誤差が許容できる範囲内のトップスクリーンデータを統計する必要があります.会社の業務実践のフィードバックから見ると、データの信頼性が高いです.
Talk is cheap, show me the code
私たちもこのツールをオープンソースしました.
github: auto-compute-first-screen-time
npm: auto-compute-first-screen-time
仲間たちの使用、ツッコミ、改善を歓迎します.