これは単なる研究の概要です。これは単なる学習のまとめです。これは単なる学習のまとめです。重要なことが 3 回述べられています。以下の内容はすべてインターネットからのものです。類似点があればコピーさせていただきます。) 「ブラウザの内部動作を学ぶことは、より多くの情報に基づいた意思決定を行い、ベストな開発手法を理解するのに役立ちます。その理由。」 ---Paul Irish
はじめに
1. ブラウザの主な機能
ブラウザの主な機能は、サーバーにリクエストを送信し、選択したネットワーク リソースをブラウザ ウィンドウに表示することです。 。ここで説明するリソースは通常 HTML ドキュメントを指しますが、PDF、画像、またはその他のタイプのリソースである場合もあります。リソースの場所は、ユーザーが URI (Uniform Resource Identifier) を使用して指定します。
ブラウザが HTML ファイルを解釈して表示する方法は、HTML および CSS の仕様で指定されています。これらの仕様は、Web 標準化団体 W3C (World Wide Web Consortium) によって維持されています。
長年にわたり、ブラウザーはこれらの仕様に完全に準拠しておらず、独自の拡張機能を開発しており、Web 開発者に深刻な互換性の問題を引き起こしてきました。現在、ほとんどのブラウザは多かれ少なかれ準拠しています。
ブラウザのユーザー インターフェイスには、次のような共通の要素が多数あります。
- URL を入力するためのアドレス バー、
-
-
-
-
- 2. ブラウザの高レベル構造
1.
ユーザー インターフェイス- アドレス バー、進む/戻るボタン、ブックマーク メニューなど。メイン ブラウザ ウィンドウで要求したページの表示を除けば、表示の他のすべての部分はユーザー インターフェイスに属します。
2.
ブラウザ エンジン
- ユーザー インターフェイスとレンダリング エンジンの間で命令を送信します。3. レンダリング エンジン
- 要求されたコンテンツの表示を担当します。要求されたコンテンツが HTML の場合、HTML および CSS コンテンツを解析し、解析されたコンテンツを画面に表示します。4. ネットワーク
- HTTP リクエストなどのネットワーク呼び出しに使用されます。そのインターフェイスはプラットフォームに依存せず、すべてのプラットフォームに基盤となる実装を提供します。5. ユーザー インターフェイス バックエンド
- コンボ ボックスやウィンドウなどの基本的なウィジェットを描画するために使用されます。プラットフォームに依存しない共通インターフェイスを公開し、下部でオペレーティング システムのユーザー インターフェイス メソッドを使用します6. JavaScript インタープリター
- JavaScript コードを解析して実行するために使用されます。7. データストレージ
- これは永続化レイヤーです。ブラウザは Cookie などのさまざまなデータをハード ドライブに保存する必要があります。新しい HTML 仕様 (HTML5) は、完全な (ただし軽量の) ブラウザ内データベースである「Web データベース」を定義しています。写真: ブラウザの主要コンポーネント
ほとんどのブラウザとは異なり、Chrome ブラウザの各タブがレンダリング エンジン インスタンスに対応していることは注目に値します。各タブは独立したプロセスです。
レンダリング エンジン
レンダリング エンジンの役割: リクエストされたコンテンツをブラウザの画面に表示します
デフォルトでは、レンダリング エンジンは HTML および XML ドキュメントと画像を表示できます。プラグイン (またはブラウザ拡張機能) を通じて、他のタイプのコンテンツを表示することもできます。たとえば、PDF ビューア プラグインを使用すると、PDF ドキュメントを表示できます。ただし、この章では、CSS を使用してフォーマットされた HTML コンテンツと画像を表示するという主な用途に焦点を当てます。
1. プレゼンテーション エンジンの種類
この記事で説明するブラウザ (Firefox、Chrome、Safari) は 2 つのレンダリング エンジンに基づいて構築されています。 Firefox は、Mozilla の「自家製」レンダリング エンジンである Gecko を使用しています。 Safari ブラウザと Chrome ブラウザはどちらも WebKit を使用します。 WebKit は、もともと Linux プラットフォームで使用されていたオープン ソースのレンダリング エンジンで、後に Mac と Windows をサポートするために Apple によって変更されました。
2. メインプロセス
レンダリング エンジンは、最初にネットワーク層から要求されたドキュメントのコンテンツを取得します。コンテンツのサイズは通常 8000 ブロックに制限されます。
その後、次の基本プロセスに進みます:
図: レンダリング エンジンの基本プロセス
レンダリング エンジンは HTML ドキュメントの解析を開始し、各タグを「コンテンツ ツリー」上の DOM ノードに 1 つずつ変換します。外部 CSS ファイルおよびスタイル要素内のスタイル データも解析されます。 HTML の視覚的な指示を伴うこのスタイル情報は、別のツリー構造であるレンダリング ツリーを作成するために使用されます。
レンダリング ツリーには、色やサイズなどの視覚的なプロパティを持つ複数の四角形が含まれています。これらの長方形の配置順序が、画面上に表示される順序になります。
プレゼンテーション ツリーが構築された後、「レイアウト」処理段階に入ります。これは、各ノードに画面上で表示される正確な座標を割り当てることを意味します。次の段階は描画です。レンダリング エンジンはレンダリング ツリーを横断し、ユーザー インターフェイス バックエンド層が各ノードを描画します。
これは段階的なプロセスであることを強調しておく必要があります。より良いユーザー エクスペリエンスを実現するために、レンダリング エンジンはコンテンツをできるだけ早く画面に表示するよう努めます。レンダリング ツリーの構築とレイアウトの設定を開始する前に、HTML ドキュメント全体が解析されるまで待つ必要はありません。レンダリング エンジンは、コンテンツの一部を解析して表示すると同時に、残りのコンテンツをネットワークから受信して処理し続けます。
3. メインプロセスの例
写真: webkit のメインプロセス
写真: Mozilla のレンダリングエンジン Gecko のメインプロセス
上の図からわかるように、WebKit と Gecko で使用される用語は若干異なります。全体的なプロセスは基本的に同じです。 Gecko では、視覚的な書式設定要素のツリーを「フレーム ツリー」と呼んでいます。すべての要素がフレームです。 WebKit で使用される用語は「レンダー ツリー」であり、これは「レンダー オブジェクト」で構成されます。要素の配置について、WebKit では「レイアウト」という用語が使用されますが、Gecko ではそれを「リフロー」と呼びます。 WebKit では、DOM ノードと視覚情報を接続してレンダリング ツリーを作成するプロセスを「追加」という用語で使用します。セマンティックではない微妙な違いの 1 つは、Gecko には DOM 要素を生成するための HTML と DOM ツリーの間に「コンテンツ スロット」と呼ばれるレイヤーがあることです。プロセスの各部分について 1 つずつ説明します。
HTML 解析
1. 解析の概要
分析レンダリング エンジンの非常に重要なリンク。ドキュメントを解析するとは、ドキュメントを、コードが理解して使用できる意味のある構造に変換することを意味します。解析の結果は通常、文書構造を表すノード ツリーであり、これは解析ツリーまたは構文ツリーと呼ばれます。
文法
解析は、文書が従う文法規則 (文書が書かれている言語または形式) に基づいて行われます。解析できるすべての形式は、特定の文法 (語彙と文法規則で構成される) に対応している必要があります。これは文脈自由文法と呼ばれます。
パーサーと字句解析
解析プロセスは、字句分析と構文分析の 2 つのサブプロセスに分割できます。
字句分析は、入力を多数のトークンに分割するプロセスです。トークンは言語の単語であり、コンテンツを構成する単位です。
文法分析は、言語の文法規則を適用するプロセスです。
パーサーは通常、解析作業を次の 2 つのコンポーネントに分割します。入力コンテンツを有効なトークンに分解する役割を担う字句アナライザー (トークン ジェネレーターとも呼ばれる) と、入力コンテンツを次の形式に分解する役割を担うパーサーです。言語の文法規則に従って有効なトークンを取得し、文書の構造を分析して解析ツリーを構築します。字句アナライザーは、スペースや改行などの無関係な文字を分離する方法を知っています。
解析は反復的なプロセスです。通常、パーサーはレクサーに新しいトークンを要求し、それを何らかの文法規則と照合しようとします。一致するルールが見つかった場合、パーサーはそのトークンに対応するノードを解析ツリーに追加し、次のトークンの要求に進みます。
一致するルールがない場合、パーサーはトークンを内部に保存し、内部に保存されているすべてのトークンに一致するルールが見つかるまでトークンの要求を続けます。一致するルールが見つからない場合、パーサーは例外を発生させます。これは、ドキュメントが無効であり、構文エラーが含まれていることを意味します。
翻訳
多くの場合、解析ツリーはまだ最終製品ではありません。解析は通常、入力ドキュメントを別の形式に変換する翻訳中に使用されます。コンパイルはその一例です。コンパイラは、まずソース コードを解析ツリーに解析し、次に解析ツリーをマシン コード ドキュメントに変換することによって、ソース コードをマシン コードにコンパイルできます。
パーサーの種類
パーサーには、トップダウン パーサーとボトムアップ パーサーの 2 つの基本的なタイプがあります。直感的には、トップダウン パーサーは文法の高レベル構造から開始し、そこで一致する構造を見つけようとします。ボトムアップ パーサーは、低レベルのルールから開始し、高レベルのルールが満たされるまで、入力コンテンツを徐々に文法ルールに変換します。
(続く…)

公式アカウントのWebページはキャッシュを更新します。これはシンプルでシンプルで、ポットを飲むのに十分な複雑です。あなたは公式のアカウントの記事を更新するために一生懸命働きましたが、ユーザーはまだ古いバージョンを開くことができますか?この記事では、この背後にあるtwist余曲折と、この問題を優雅に解決する方法を見てみましょう。それを読んだ後、さまざまなキャッシュの問題に簡単に対処でき、ユーザーが常に新鮮なコンテンツを体験できるようになります。最初に基本について話しましょう。それを率直に言うと、アクセス速度を向上させるために、ブラウザまたはサーバーはいくつかの静的リソース(写真、CSS、JSなど)やページコンテンツを保存します。次回アクセスするときは、もう一度ダウンロードすることなく、キャッシュから直接検索できます。自然に高速です。しかし、このことは両刃の剣でもあります。新しいバージョンはオンラインです、

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

この記事では、CSSを使用したWebページへの効率的なPNG境界追加を示しています。 CSSはJavaScriptやライブラリと比較して優れたパフォーマンスを提供し、微妙または顕著な効果のために境界幅、スタイル、色を調整する方法を詳述していると主張しています

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex

この記事では、html5< time>について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

Dreamweaver Mac版
ビジュアル Web 開発ツール
