Dispositivo de navegador web moderno Chrome (parte 3/4)

Esta es la tercera parte de 4 sobre cómo funcionan los navegadores. Anteriormente, analizamos la arquitectura y la navegación de multiprocesador. En esta publicación, veremos lo que sucede dentro del proceso * renderizador.





Parte 1

Parte 2

Parte 3 (actual)

Parte 4



Acerca de las funciones de traducción
  • , , .. () . — , - . : *-, *-. , , , , , .
  • , , , , . "" , .


*- . *- , . , "" Web Fundamentals .



*- -



*- , . *- , . JavaScript , web worker *- (service worker). *- (compositor threads) *- (raster threads) *- .



*- — HTML, CSS JavaScript -, .



imagen



1: *- , worker , *-, *-





= DOM



HTML-, (HTML) Document Object Model (DOM).



DOM — , API, - JavaScript.



HTML- DOM HTML. , HTML . , </p> HTML. , Hi! <b>I'm <i>Chrome</b>!</i> ( b i) , Hi! <b> <i></i></b><i>!</i>. , HTML . , , " " HTML.



=



- , , CSS JavaScript. . , , DOM, "preload scanner ". HTML- , <img> <link>, preload scanner , HTML-, *- *-.



imagen

2: HTML DOM



= JavaScript



HTML- <script>, HTML , JavaScript . ? JavaScript , , document.write(), DOM ( HTML ). HTML , JavaScript, HTML-. , JavaScript, V8 .





, - , . JavaScript document.write(), async defer <script>. JavaScript . JavaScript , . <link rel="preload"> — , , . Resource Prioritization – Getting the Browser to Help You.





DOM , , , CSS. CSS DOM. , CSS-. CSS DevTools.



imagen

3: CSS



CSS, DOM . <h1> , <h2>, . , . , CSS Chrome, .



(Layout)



*- , . , . " " — , , .



. DOM *- (layout tree), , x y . *- DOM, , , . display: none, *- (, visibility: hidden *-). , - p::before{content: "Hi!"}, *-, DOM-.



imagen



4:



imagen



5: DOM *-



— . , , , , ; , .



CSS , . , . Chrome . , BlinkOn Conference .



imagen

6: -





DOM, . , . , , , .



, z-index, HTML, .



imagen



7: , ,



imagen



8: HTML, z-index



, *- (*-, Paint Records). *- — " , , ". <canvas> JavaScript, .



imagen



9: *- *-



=



, , , . , - *-, .



imagen



10: DOM+, *- *-



, . 60 ; , . , , "" ("janky").



imagen

11:



, , , , JavaScript.



imagen



12: , - JavaScript



requestAnimationFrame() JavaScript () . JavaScript. JavaScript Web Workers, .



imagen



13: JavaScript



* (Compositing)



= ?



imagen



14.



, , , , ? (rasterizing).



, viewport. , . Chrome , . , * (compositing).



= *



* — , , "-" (*-, compositor thread). , , , — . , .



, DevTools Layers.



imagen



15. *



=



, , *- *- ( "Update Layer Tree" Performance DevTools). , (, -), , , will-change CSS.



imagen



16. *- (layout tree) *- (layer tree)



, * , , . , , . Stick to Compositor-Only Properties and Manage Layer Count.



=



*- *-. *- . , , *- *- (raster threads). *- GPU.



imagen



17. *- GPU



*- *-, viewport ( ) . , , .



, *- , *- (draw quads), *- (compositor frame).



*- (draw quads)



, .



*- (compositor frame)



*-, .



IPC- *- *-. *UI- *- *- . *- GPU . , *- *- GPU.



imagen



18. *- *-. *- GPU



, . *- JavaScript. . , .





*. , .



*- , , , , .



Parte 1

Parte 2

Parte 3 (actual)

Parte 4




All Articles