ホームページ >ウェブフロントエンド >jsチュートリアル >プロファイリングページには、ナビゲーションタイミングAPIがロードされます
コアポイント
window.performance.timing
オブジェクトのプロパティとして保存されます。イベントが発生しない場合、その値はゼロです。 APIは、ユーザーが特定のページにアクセスする方法を決定するインターフェイスも定義します。 Webページの読み込み速度は、ユーザーエクスペリエンスに影響を与える重要な要因の1つです。負荷の速度が遅いと、ユーザーが不満を抱き、解約できます。ただし、ユーザーのブラウザ、ネットワーク条件、サーバーロード、アプリケーションコードなど、全体的な読み込み時間に多くの要因に影響するため、負荷が遅い原因のトラブルシューティングは簡単ではありません。幸いなことに、ナビゲーションタイミングAPIは、この問題を簡単に解決するのに役立ちます。
過去に、開発者はこれらの分野で収集されたデータへのアクセスが非常に制限されていました。多くの開発者は、長い間JavaScriptのDate
<code class="language-javascript">var start = new Date(); window.addEventListener("load", function() { var elapsed = (new Date()).getTime() - start.getTime(); }, false);</code>
Date
ナビゲーションタイミングAPIデビューDate
オブジェクトとは異なり、ナビゲーションタイミングAPIは、DNSルックアップ、TCP接続確立、ページリダイレクト、DOMビルド時間、およびその他のさまざまなメトリックに関連する測定データを提供します。ナビゲーションタイミングもブラウザに組み込まれているため、追加のオーバーヘッドが発生していません。
検出ブラウザーサポート Date
現在、ナビゲーションタイミングAPIは、Internet Explorer 9、Firefox、およびChromeのみをサポートしています。したがって、APIを使用する前に、ブラウザのサポートを検出する必要があります。 APIは
<code class="language-javascript">var start = new Date(); window.addEventListener("load", function() { var elapsed = (new Date()).getTime() - start.getTime(); }, false);</code>
録音されたイベント
APIは、ページの読み込み中に多くのマイルストーンイベントのタイムスタンプを記録します。各イベントは、オブジェクトの属性として保存されます。次のリストでは、各イベントについて説明します。イベントが発生しない場合(ページリダイレクトなど)、その値はゼロです。 (注:Mozillaは、これらのイベントがこの順序で発生すると主張しています。)window.performance.timing
navigationStart
:ブラウザがプロンプトを完了してから、前のドキュメントをアンインストールする時間。以前のドキュメントがない場合、navigationStart
はfetchStart
に等しくなります。これは、ユーザーが知覚するページの読み込み時間の始まりです。 fetchStart
:ブラウザがURLを探し始める前の瞬間。検索プロセスでは、アプリケーションキャッシュをチェックするか、サーバーがキャッシュされていない場合はファイルを要求します。 domainLookupStart
:ブラウザがURL DNSの検索を開始する前の瞬間。 DNSルックアップが不要な場合、値はfetchStart
と同じです。 domainLookupEnd
:DNS検索後の瞬間時間が完了しました。 DNSルックアップが不要な場合、値はfetchStart
と同じです。 connectStart
:ブラウザがサーバーに接続した瞬間。 URLがキャッシュまたはローカルリソースである場合、値はdomainLookupEnd
に等しくなります。 connectEnd
:サーバーとの接続を確立した直後の時間。 URLがキャッシュまたはローカルリソースの場合、値はdomainLookupEnd
と同じです。 secureConnectionStart
:HTTPSプロトコルを使用している場合、secureConnectionStart
は、安全なハンドシェイクの開始前に即時時間を設定します。ブラウザがHTTPSをサポートしていない場合、この値はundefined
でなければなりません。 requestStart
:ブラウザがURLリクエストを送信する前の時間。 API未定義requestEnd
値。 redirectStart
:リダイレクトを開始するURLフェッチの開始時間。 redirectEnd
:リダイレクトが存在する場合、redirectEnd
は、受信した最後のリダイレクト応答の最後のバイトの後の時間を表します。 responseStart
:ブラウザが応答の最初のバイトを受信した直後の時間。 responseEnd
:ブラウザが応答の最後のバイトを受信した直後の時間。 unloadEventStart
:前のドキュメントのイベントの前の瞬間がトリガーされました。以前のドキュメントがない場合、または以前のドキュメントが別のソースから来ている場合、この値はゼロです。 unload
unloadEventEnd
イベントの直後の時間がトリガーされます。以前のドキュメントがない場合、または以前のドキュメントが別のソースから来ている場合、この値はゼロです。別のソースにリダイレクトがある場合、unload
とunloadEventStart
の両方がゼロです。 unloadEventEnd
domLoading
値が「読み込み」に設定される前の時間。 document.readyState
domInteractive
値が「インタラクティブ」に設定される前の時間。 document.readyState
domContentLoadedEventStart
domComplete
:document.readyState
値が「完全」に設定される前の時間。 loadEventStart
:ウィンドウの荷重イベントの前の時間がトリガーされます。イベントが起動されていない場合、値はゼロです。 loadEventEnd
:ウィンドウの荷重イベント後の瞬間がトリガーされます。イベントが解雇されていないか、まだ実行されている場合、値はゼロです。 ナビゲーションタイプ
ナビゲーションタイミングAPIは、ユーザーが特定のページにアクセスする方法を決定するインターフェイスも定義します。 window.performance
オブジェクトには、2つのプロパティ(navigation
とtype
)を含むredirectCount
オブジェクトも含まれます。 type
プロパティは、ユーザーが現在のページに移動する方法を提供します。次のリストでは、type
:
type
の値は0です。 type
は1に等しくなります。 type
は2に等しくなります。 type
は255に等しい。 redirectCount
プロパティには、現在のページにナビゲートされたリダイレクトの数が含まれています。リダイレクトが発生しない場合、またはリダイレクトが別のソースから来た場合、redirectCount
はゼロです。次の例は、ナビゲーションデータへのアクセス方法を示しています。
<code class="language-javascript">var start = new Date(); window.addEventListener("load", function() { var elapsed = (new Date()).getTime() - start.getTime(); }, false);</code>
データの解釈
ナビゲーションタイミングAPIを使用して、ページの読み込み時間の特定のコンポーネントを計算できます。たとえば、DNSルックアップを実行するのにかかる時間は、からtiming.domainLookupEnd
を差し引くことで計算できます。次の例では、いくつかの有用なメトリックを計算します。 「usertime」は、ユーザーエクスペリエンスのページの読み込み遅延の合計に対応しています。 「DNS」および「接続」変数は、それぞれDNSルックアップを実行してサーバーに接続するのにかかる時間を表します。 「リクエストタイム」は、サーバーに送信された合計時間を保存し、応答を受け取ります。最後に、「Fetchtime」は合計時間を保存して、ドキュメントの取得を完了します(キャッシュへのアクセスなど)。 timing.domainLookupStart
関数は、ウィンドウロードイベントハンドラーで呼び出されていることに注意してください。これにより、ローディングイベントが完了した瞬間にのみナビゲーションタイミングデータが使用されます。ロードイベントハンドラーからタイミングデータにアクセスされると、setTimeout()
の値はゼロになります。 timing.loadEventEnd
<code class="language-javascript">function supportsNavigationTiming() { return !!(window.performance && window.performance.timing); }</code>ナビゲーションタイミングAPIは、AJAX呼び出しと組み合わせて使用して、実際のユーザーデータをサーバーに報告することができます。これは、開発者が実際の環境でページの動作を理解できるため、便利です。このデータは、ページの読み込みプロセスの視覚チャートを作成するためにも使用できます。実際、Google Analyticsには、レポートにナビゲーションタイミングデータが含まれています。
を覚えておくべきキーポイント
Date
オブジェクトはページロードデータを正確に測定できません。 (ナビゲーションタイミングAPIに関するFAQセクションはここに追加でき、必要に応じて元のドキュメントからコンテンツを抽出して書き直すことができます)
以上がプロファイリングページには、ナビゲーションタイミングAPIがロードされますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。