[Browser] How browser works (6) - Painting, and Rendering engine's thread
3204 ワード
この記事は、Tali Garsielの「How Browsers Work: Behind the scenes of modern web browsers」を翻訳したものです.
Painting
ステップ
Global and Incremental
The painting order
CSS説明では background color background image border children outline Firefox display list
Firefoxは、
Firexfoxは、他の
Webkit rectangle sotrage
Webkitは
Dynamic changes
ブラウザは、
The rendering engine's threads
Event loop
ブラウザのプライマリ・スレッドは
How Browsers Work: Behind the scenes of modern web browsers
ブラウザはどのように動作しますか?
Painting
ステップ
Painting
において、Render tree
のrenderer
メソッドが循環的に呼び出される.Global and Incremental
painting()
と同様に、Layout
とGlobal painting
があります.Incremental painting
は、ツリー全体に影響を及ぼさずに変更されます.変更されたIncremental painting
は長方形を無効にし、オペレーティングシステムはこの領域がrenderer
であると判断し、renderer
メソッドを呼び出す.オペレーティングシステムは、1つずつ処理するのではなく、いくつかの領域を統合して処理します.ローマでは、dirty
はメインプロセスに含まれていないため、より複雑です.Chromeはオペレーティングシステムの動作に従い、paint()
はここで発生したイベントをrender
に転送する.ツリーは、イベントに関連するpresentation
に到達するまでツリーを巡り、Render root
に配置される.The painting order
CSS説明では
renderer
の順序が定義されている.これはrepaint
に積まれた順番です.painting
スタック内のスタックの順序は次のとおりです.Firefoxは、
stacking context
から描画された矩形のBlock renderer
を生成する.このリストは、長方形に関連するRender Tree
、例えばdisplay list
およびbackground
を正確な順序でリストする.リストのおかげで、ツリーを1回回るだけでborder
のプロセスを完了できます.Firexfoxは、他の
renderer
の下のrepaint
のように見えないelemnts
を添加しないことによって最適化される.Webkit rectangle sotrage
Webkitは
elements
の矩形をelements
として記憶する.新しい長方形に比べて、他の部分だけがrepaint
です.Dynamic changes
ブラウザは、
bitmap
の変化がrepaint
万color
になるなど、最小限の動作で変化に応答しようとしている.element
の変化はrepaint
だけでなく、子供と兄弟のposition
とelement
も生じた.DOMノードを追加すると、ノードのlayout
およびrepaint
になります.layout
のフォントサイズの変更などの重大な変更が発生した場合、キャッシュは無効になり、repaint
の合計はhtml element
とrender tree
になります.The rendering engine's threads
relayout
は、単一スレッドを返します.ネットワーク通信などのタスクを除いて、ほとんどのタスクはこのスレッドに返されます.FirefoxとSafariでは、repaint
がブラウザのメインスレッドです.Chromeは各タブのメインスレッドです.ネットワーク通信はいくつかの異なるスレッド間で行われ、これらのスレッドの数は通常2〜6個に制限される.Event loop
ブラウザのプライマリ・スレッドは
Rendering engine
と呼ばれます.これは、プロセスが継続的に実行され、Rendring engine
およびevent loop
のようなイベントが発生したときに処理される無限ループです.Firefoxのコードは次のとおりです.while (!mExiting)
NS_ProcessNextEvent(thread);
参考資料How Browsers Work: Behind the scenes of modern web browsers
ブラウザはどのように動作しますか?
Reference
この問題について([Browser] How browser works (6) - Painting, and Rendering engine's thread), 我々は、より多くの情報をここで見つけました https://velog.io/@arski/Browser-How-browser-works-5-Painting-and-Rendering-engines-threadテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol