Core/Dash ディメンション: LOAF

Long Animation Frames をそのソースに帰属させることで、メインスレッドをブロックし INP を低下させている正確なスクリプト URL を見つけます。

無料トライアル [include]partners.html[\/include]

ディメンション: Long Animation Frames (lurl)

LOAF ディメンションは、ユーザーのセッション中に Long Animation Frames を引き起こしたスクリプトの URL を表示します。各値はスクリプトの URL です。ファーストパーティのバンドル、サードパーティのアナリティクス タグ、チャット ウィジェット、同意管理マネージャー、またはレンダリングをブロックするほど長く実行されたその他のものが含まれます。これは、DevTools で再構築しなければならない単なるスタック トレースではなく、ソース レベルでの帰属です。

CoreDash は、[url=https:\/\/developer.chrome.com\/docs\/web-platform\/long-animation-frames]Long Animation Frames API (LoAF)[\/url] を使用してこのデータを収集します。これは、Chrome が古い Long Tasks API の代替として提供しているものです。Long Tasks はフレームに時間がかかりすぎたことしか教えてくれませんでしたが、LoAF はそのフレーム内でどのスクリプトが実行され、その URL が何であったかを教えてくれます。この違いこそが、このディメンションを本番環境で有用なものにしています。

coredash loaf scripts

なぜ Long Tasks では不十分だったのか

2017 年から利用可能な Long Tasks API は、50 ミリ秒を超えるメインスレッド タスクにフラグを立てましたが、帰属情報はほとんど得られませんでした。ブロックが発生したことはわかりますが、何が原因かはわかりませんでした。開発者は、タスクのタイムスタンプとネットワーク ウォーターフォールを関連付けることに何時間も費やし、どのスクリプトが原因であるかを推測していました。

LoAF API はこれを変えます。これは PerformanceLongAnimationFrameEntry オブジェクトを報告し、各オブジェクトには scripts 配列が含まれています。その配列の各エントリには、invokerType、sourceURL、および duration があります。CoreDash は、長いフレーム中に実行された各スクリプトの sourceURL を読み取り、LOAF ディメンション値として保存します。その結果、ユーザーの長いフレームに表示される頻度でランク付けされたスクリプト URL のリストが得られます。

CoreDash が LoAF データをどのように活用するか

ユーザー インタラクションが Long Animation Frame をトリガーするたびに、CoreDash は INP の観察結果とともに、寄与したスクリプト URL を記録します。つまり、INP データを LOAF URL でフィルタリングして、どのスクリプトが最悪のインタラクションの原因であるかを確認できます。ディメンションは URL ごとにグループ化されるため、そのスクリプトが長いフレームを引き起こしたセッションの数を確認できます。

LOAF ディメンションに表示される典型的なエントリ: