ブラウザの動作原理


ブラウザのキー機能

  • ブラウザの主な機能は、サーバにユーザが選択したリソースを要求し、ブラウザに表示することである.リソースのアドレスはURIによって決定される.

    リソースの種類はHTML、CSS、JS、PDF、Imageなどがあります.
  • ブラウザは、HTML、CSSの詳細説明に従ってHTMLファイルを解析表示し、これらのファイルは、Web標準化規格W 3 Cによって作成される.
  • ブラウザのユーザーインタフェースは似ています。通常は次のようなものがあります。


    アドレスバー
  • URI
  • 前ボタンと次ボタン
  • ブックマーク
  • 更新ボタンと現在の文書のロードを停止可能な停止ボタン
  • ホームボタン
  • 興味深いことに、これらのインタフェース要素は標準的なネーミングUIではありません.
    HTML 5リストでは、アドレスバーやステータスバーなどの一般的な要素のほか、ブラウザの必須UIは定義されていませんが、長年にわたって、それぞれの利点を模倣し合うとともに、現在のブラウザUIも生成されています.

    ブラウザの基本構造


  • ユーザーインタフェース-アドレスバー、前/次のボタン、ブックマークメニューなど.要求されたページが表示されるウィンドウを除いて、残りのすべての部分.

  • ブラウザエンジン-ユーザーインタフェースとレンダリングエンジンの動作を制御します.(ブラウザ自体で実行されるソフトウェア構成を示すエンジン)

  • レンダーエンジン-リクエストの内容を表示します.たとえば、HTMLを要求すると、HTMLとCSSのブロックが画面に表示されます.コア

  • 通信:HTTP要求などのネットワーク呼び出しに使用されます.これはプラットフォームとは独立したインタフェースであり、各プラットフォームの下部で動作します.

  • UIバックエンド:コンボボックスやウィンドウなどの基本デバイスを表示します.オペレーティングシステムのユーザーインタフェースアーキテクチャを使用します.これは、プラットフォームで明確に説明されていない汎用インタフェースです.(<button>または<input>などのラベルのデフォルトスタイル)

  • JavaScriptインタプリタ:JavaScriptコードを解釈および実行します.

  • リポジトリ-このセクションはリポジトリの階層です.Cookieなどのすべてのタイプのリソースをハードディスクに格納する必要があります.HTML 5リストには、ブラウザがサポートする「Webデータベース」が定義されています.

  • レンダリングエンジンが一番重要だそうです。レンダリングエンジンはどのように動作しますか?



    レンダーエンジン(Render Engine)


    レンダリングエンジンは、要求されたリソースをブラウザ画面に表示します.
    代表的な2つはWebkit(Chrome,Safari)とGecko(Fire Fox)です.

    レンダーエンジンモーションパス(Render Engine Motion Passes)


  • HTMLパーティション:レンダリングエンジンは、まずHTMLドキュメントをパーティション化し、コンテンツツリー内でタグをDOMノードに変換します.次に、外部CSSファイルに含まれるスタイル要素もグループ化されます.次に、スタイル情報およびHTML表示規則は、「レンダリングツリー」と呼ばれる別のツリー
  • を構築する.
    構築
  • レンダーツリー:レンダーツリーには、カラーや面積などの視覚的な属性を持つ長方形が含まれており、指定した順序で画面に表示されます.
  • landerツリーの配置:レンダリングツリーの構築が完了すると、実際の配置が開始されます.これは、各DOMノードが指定された場所に表示されることを意味します.
  • レンダーツリーの描画:このプロセスはUIのバックエンドで実行され、レンダーツリー内のノードごとにジオメトリが作成されます.

    Webパケット提示動作プロセス

    グリコレンダーアクションプロシージャ
    両者の違いは、ガイ科エンジンにはコンテンツ処理と呼ばれるプロセスがあり、WebパケットにはHTMLとCSSを個別に要求するプロセスがあり、ガイ科はHTMLを要求し、パケット化した後にCSSとパケット統合を呼び出す.
    いずれにせよ、似たような仕事だという.

    1.HTML分割後にDOM TREEを構築する


    DOMツリーを構築するには、まずスライスを行う必要があります.これは、ブラウザがコードを理解可能な構造に変換するプロセスを意味し、分割結果は通常、ドキュメント構造を表すノードツリーであり、分割ツリーまたは構文ツリーと呼ばれます.
    <html>
      <body>
        <p>
          Hello World
        </p>
        <div> <img src="example.png"/></div>
      </body>
    </html>
    このコードは、次のように構成されています.

    💡 CSSパーティション

    💡 ではjsファイルは?
    JavaScriptは、レンダリングエンジンではなくJavaScriptエンジンによって処理されます.スクリプトタグに遭遇すると、HTML解析器はDOM生成プロセスを停止してJavaScriptコードを実行し、JavaScriptエンジンに制御権限を渡します.制御権限を付与されたJavaScriptエンジンは、スクリプトタグ内のJavaScriptコードまたはスクリプトタグのsrcツリービューで定義されたJavaScriptファイルをロードおよび配布することによって実行されます.JavaScriptの実行が完了すると、再度HTML解析器に制御権限を渡し、ブラウザ停止時からDOMの再作成を開始します.
    これにより、ブラウザはHTML、CSS、Javascriptを同期的に処理します.これは、scriptタグの位置によっては、ブロックが発生し、DOMの作成が遅延する可能性があることを意味する.したがってscriptタグの位置は重要な意義を持つ.
    body要素の一番下にJavaScriptを置くのは良いアイデアです.その理由は以下の通り.
  • HTML要素は、スクリプトのロード遅延によってレンダリングに影響を与えず、ページのロード時間を短縮します.
  • DOMが完了していない場合にJavaScriptによってDOMが操作されるとエラーが発生します.
  • 2.レンダリングツリーの構築


    DOM Treeビルド中、ブラウザはレンダリングツリーをビルドします.DOMツリーがWeb上に表示するコンテンツを設定している場合、レンダリングツリーは、表示要素と表示スタイルを指定します.
    (Fire Foxはこのコンポーネントをジオメトリ(フレーム)と呼び、Webスイートをレンダラー(レンダラー)またはレンダラーオブジェクト(レンダラーオブジェクト)と呼びます.)

    レンダラーとDOMは1:1の対応関係ではありません.
    これらの要素は、例えばHTMLの<head></head>タグCSSのdisplay:[none]タグとScriptタグmetaタグのように除外されます.
    つまり、[レンダリングツリー](Render Tree)には、ページをレンダリングするために必要なノードだけが含まれます.次に、表示された各ノードに対して一致するCSSOMルールを検索して適用し、ノードをコンテンツと計算スタイルとともにエクスポートします.

    3.レンダーツリーを配置する


    レンダーツリーを作成した後、Webページに配置し始めます.これをリフロー(Reflow)と呼びます.ブラウザの座標0,0から、各領域に対応するViewportの面積で配置します.このプロセスでは、一部の地域で変更が発生した場合、グローバルな導入とインクリメンタルな導入が発生します.
    グローバルレイアウト(Global Layout):レンダリング全体に影響を与えるグローバルスタイルを変更すると発生します.
    ポイントレイヤの配置(Point Layer Placement):汚れたレンダラーを配置するときに非同期的に励起されます.
    ダーティレンダラー:ブラウザが特別な変更要素を指定していることを示します.変更するのは、ブラウザのみです.
    ブラウザでは、レンダーツリーを使用して画面に表示されるグラフィックとテキストの描画を開始し、レンダラーのペイント方法を呼び出しながらUI Backend要素を使用して描画します.
    各要素は、次のようにブロックレンダラーの順に描画されます.
  • バックグラウンド
  • 背景画像
  • ボーダー
  • 子エリオット
  • 輪郭
  • 4.レンダーツリーのカラーリング


    レンダーツリーが作成され、レイアウトが構成されている場合、UI Beck Endは、指定したスタイルと位置値に従って各ノードを画面上に配置します.
    より良いユーザー体験を得るためには、レンダリングエンジンはできるだけ早く各コンテンツを画面に配置する必要があります.
    したがって、すべてのHTML要素がレンダリングエンジンとして一度に印刷されるわけではありません.まず、ツリー構造で画面に表示され、Web上の他の要素がネットワークを介して順次レンダリングエンジンに入ります.
    ブラウザが変更されると、[再フロー](Reflow)と[再ペイント](Repain)が実行されます.塗り直しには、変更したスタイルを再適用する機能があり、サイズや位置も変更された場合は、再描画も実行されます.
    複数のブログを振り返るときは、できるだけ理解したことと理解したことをできるだけ詳しく書きます.