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

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
