ブラウザーの動作に関するプレゼンテーションを作成したいのですが、ブラウザーのURLが要求されるたびに発生する正確なライフサイクルシーケンスを知っている人はいますか?
応答がサーバーから受信された後に起こるステップは何ですか:
-これが正しい順序であるかどうかは静かではありません...
それはすべてのブラウザで同じですか、異なるブラウザは異なるライフサイクルを持っていますか?
注-以下のCedによる各ステップの詳細を含む、よく書かれた回答。私が実際に探していたのは "Critical Rendering Path"-プロセスの一般的な段階は他の良い人によってよく説明されています答えます。
神に感謝し、みんなお疲れ様でした!
あなたが話しているのはCritical Rendering Pathです。
ポイント1.、3、4は、次のように再開できます。
舞台裏で起こることの内訳はここにあります。
1。 DOMオブジェクトの構築
最初のステップは、DOMの作成です。実際、ネットワークから受け取るのはバイトであり、ブラウザーはいわゆるDOMツリーを使用します。そのため、これらのバイトをDOMツリーに変換する必要があります。
開発者ツールをチェックして、所要時間を確認できます。
ここでは、4.938msかかったことがわかります。
このプロセスが完了すると、ブラウザーはページの完全なコンテンツを取得しますが、ブラウザーをレンダリングできるようにするには、CSSOMモデルとも呼ばれるCSSオブジェクトモデルを待たなければなりません。レンダリングされたとき。
2。 CSSの処理
Cssの場合、上記と同じです。ブラウザはこれらのファイルをCSSOMに変換する必要があります。
Cssもツリー構造です。実際、親要素にfont-sizeを設定すると、子はそれを継承します。
開発者ツールでは、スタイルの再計算と呼ばれます
CSSはクリティカルレンダリングパスの最も重要な要素の1つです。ブラウザはページ内のすべてのcssファイルを受信して処理するまでページレンダリングをブロックするため、CSSはレンダリングブロックです
3。レンダーツリー
CSSOMとDOMを組み合わせて表示します。
4。レイアウト
すべてをピクセル単位で計算する必要があります。そのため、要素の幅が50%であると言うと、背後のブラウザーはピクセル単位で変換します。
レンダーツリーが更新されるたびに、またはビューポートのサイズが変更されるたびに、ブラウザーはレイアウトを再度実行する必要があります。
5.Paint
ステップは、これをすべて画面上のピクセルに変換します。これはペイントステップです。
Javascript
JavaScriptのライフサイクルについては、情報 こちら をご覧ください。
その要点は、あなたが最も気にしているイベントはDOMContentLoaded
であるということです。これは、DOMの準備ができたときです。
ブラウザが最初にHTMLをロードし、
<script>...</script>
テキストでは、DOMの構築を継続できません。今すぐスクリプトを実行する必要があります。したがって、DOM Content Loadedは、このようなスクリプトがすべて実行された後にのみ発生する可能性があります。また、外部スクリプト(srcを使用)では、スクリプトの読み込みおよび実行中にDOMビルドが一時停止されます。したがって、DOM Content Loadedは外部スクリプトも待機します。
唯一の例外は、非同期および遅延属性を持つ外部スクリプトです。スクリプトを待たずに処理を続行するようブラウザに指示します。したがって、ユーザーはスクリプトの読み込みが完了する前にページを見ることができ、パフォーマンスが向上します。
それに加えて、このすべてのJavaScriptはどこにありますか?
さて、再描画の間に実行されています。ただし、ブロックされています。ブラウザはJavaScriptの実行を待ってからページを再描画します。つまり、ページに適切な応答(多くのfps)を持たせたい場合、JSは比較的安価である必要があります。
クッキー
HTTP要求を受信すると、サーバーは応答と共にSet-Cookieヘッダーを送信できます。通常、Cookieはブラウザによって保存され、その後、Cookie値はCookie HTTPヘッダーのコンテンツと同じサーバーに対して行われるすべてのリクエストとともに送信されます。さらに、特定のドメインおよびパスへの制限と同様に、有効期限の遅延を指定して、Cookieが送信される期間とサイトを制限できます。
ネットワーキングに関しては、これはブラウザーのライフサイクルの範囲を超えています。これはあなたの質問です。これも私はあまり詳しくありませんが、TCP here について読むことができます。あなたが興味を持っているのは handshake =。
ソース:
このトピックに関する多くの説明を見つけることができますが、ブラウザがWebページをレンダリングする方法を理解するための最も簡単な説明は次のとおりです。
何が起こるかを見たい人には以下を提案したいと思います、それは安い答えですが、ブラウザがURLのコンテンツを構築するためにファイルのカスケードを取得する方法を説明するのに役立つかもしれません(この場合はhtml )。
設定で遊んでください。 [パフォーマンス]タブで作成されたタイムラインも確認する必要があります
ここでは、パフォーマンスを調整するのが便利な場合があります。そのため、それが実演したい場合は、リアルタイムで(遅い)視聴できます。
重要なことは(HTMLページを例として使用)、CSSのレンダリング/適用/ JavaScriptの実行の順序は、DOMのどこに表示されるかによって異なります。必要なリソースが利用可能であることを条件に、ロード後の任意の時点でスクリプトを実行することが可能です。 CssはHTMLドキュメントの一部(インライン)である場合もあれば、非常にビジーなサーバーから来て適用されるまで10〜20秒かかる場合もあります。これが助けになることを願っています-R
その他の役立つリソース:
Firefox 3Dティルトプラグイン Webページの視覚化と、さまざまなレイヤーでのコンテンツのレンダリング方法を支援します。
Chromeの[パフォーマンス]タブ ページの読み込み中に何が起こるか、およびdomツリーがどのように構築されるかを適切に視覚化します。レンダリングプロセスのボトルネックを特定するのに役立ちます。
Chrome:// net-internals /を開くと、キャッシュされたHTMLコンテンツ、キャッシュされた画像、DNSキャッシュ、ポートを開くなど、ブラウザの多くのバックエンド機能を見ることができます。
otherアクティビティに言及しているため、ブラウザのURLがリクエストされたときにユーザーによるを意味するのではないかと心配しています。
ユーザーコンテンツ、マークアップ、画像を含むことができる最初のドキュメントを取得した後:
API
s を通じて、ページはクライアントのハードウェア(カメラ、GPS、マイク、スピーカー、ジョイスティック、ファイルシステムなど)を使用できます。認証、SSL、 [〜#〜] cors [〜#〜] などのような多くのフローチャートがあります。Cedの答えは非常に詳細(+1!)ですが、それは単なるヒントです氷山の。おそらく、あなたは [〜#〜] kiss [〜#〜] プレゼンテーションの視聴者のために、あなたが選択する必要があります。