SlideShare una empresa de Scribd logo
1 de 45
Browsers
Magic is inside
Alex Tokarenko
tokarenko@devexperts.com
What we will talk about
• Browser internal components
• Main processes during page load or dynamic changes
• Performance tips and tricks
• Chrome Devtools in action
Why we will talk about it?
• Mostly used software in the world
• Internet Explorer 90% dominance
• Nowadays browsers not a "black box“
- they became opensource
High Level structure
Referenced rendering engines
All examples will be from source code of
WebKit, Blink, Gecko
Why? – Because they are open sourced
Rendering engine basic flow
Parse HTML to construct DOM tree
Render tree construction
Layout the render tree
Paint
Main components and processes
Parse HTML to construct DOM tree
Render tree construction
Layout the render tree
Paint
HTML Parser doings
• Parses input HTML tag soup
• Fixes web author mistakes
• Requests to load resources
• Constructs DOM tree
Turning ‘soup’ into DOM tree
HTML Language
• HTML approach is very "forgiving“
• HTML is not a context free grammar
• Can’t be parsed by XML parser
• Can’t be parsed by regular parsers (BNF)
• Defined in DTD (Document Type Definition)
Error tolerance example #1
WebKit source code:
if (m_inStrayTableContent && localName == tableTag)
popBlock(tableTag);
Error tolerance example #2
• Start with closed tag
• Not closed tags at all
Handling </BR> in WebKit code:
if (t->isCloseTag(brTag) && m_document->inCompatMode()) {
reportError(MalformedBRError);
t->beginTag = true;
}
HTML parsing flow
Special parsing algorithm because
• Forgiving nature of the language
• Historically lack of documentation developers
• Huge amount of invalid code
HTML parsers 'guesses' the intention of the code
author
Resources loading during parsing
• Scripts
• CSS
• Other resources
Scripts loading VS Page Latency
Script is loaded and executed
immediately when achieved
Parsing halts until script execution
Recommendation
• Put the script at the end of document
• HTML5 defer and async attributes
CSS Loading VS Latency
Can block scripts execution until loaded
Browsers are smart
Speculative parsers find resources references
to load in parallel threads
Parse HTML to construct DOM tree
Render tree construction
Layout the render tree
Paint
Rendering tree
Holds:
• Tree of visual elements in display order
• Style information, computed metrics
• Shadow DOM tree
Rendering tree VS DOM
Out of basic flow
• “display:none” elements are excluded
• Absolute and fixed position elements
• Non visual elements like <head></head>
Computed style
Performance impact
• Style is a very large construct
• Lookup for matching CSS rule can cause performance issues
div div div div {
…
}
• Applying rules is complex
Browsers are smart
• Style objects can be shared between render
objects
• Browser collect changes and process them
on demand
Parse HTML to construct DOM tree
Render tree construction
Layout the render tree
Paint
What is Layout process?
• Calculation of geometry and position
• Flow based model (left-to-right, top-to-bottom)
• Coordinate system relative to top left
coordinates
How Layout Process Works
• Parent determines its width
• Parent places children with right coordinates
• Accumulate children their heights
• Caches calculated values
Global Layout
• Occurs at least ones for whole tree
• Happens on global changes (like window resize)
Incremental Layout
Happens:
• When new element added to the tree
• When geometric attributes changes
Browser is smart
Usually changes are batched and done
asynchronously
However script accessing geometry attributes can force
synchronous layout
Synchronous layout
Synchronous layout demo
// Animation loop
function update(timestamp) {
for(var m = 0; m < movers.length; m++) {
movers[m].style.left = ((Math.sin(movers[m].offsetTop + timestamp/1000)+1) * 500) + 'px';
}
raf = window.requestAnimationFrame(update);
};
Painting
• Traversing the tree from the root
• Global and Incremental paint
• Dirty bit system
Painting order
CSS2 specification defines the order of the painting elements:
– background color
– background image
– border
– children
– outline
What can trigger REcalculations?
• Changes style will cause restyle and repaint of the element;
• Changes of position will cause relayout and repaint;
• Adding a DOM node will cause relayout and repaint of the
node.
• Major changes will cause invalidation of caches, relayout
and repaint
Recommendations
o Cache style values if possible for read
o Change Non-visible element and set it to visible
o Use documentFragment or cloned element and then swap it with
old one
o Use classes instead of inline styles
o Try to keep changes lower in the tree
How we make a deal with all this stuff?!
• Browser dev tools
– Timeline
– Logs
– Heap profiler
– Object allocations
– CPU Profiler
Links
• http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/
• http://taligarsiel.com/Projects/howbrowserswork1.htm
• https://developers.google.com/chrome-developer-tools/docs/demos/too-much-layout/
• http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/
• https://www.webkit.org/blog/114/webcore-rendering-i-the-basics/
• http://www.chromium.org/blink
• http://msdn.microsoft.com/en-us/library/aa741312(v=vs.85).aspx
• https://lists.webkit.org/pipermail/webkit-dev/2013-April/024436.html
• http://stackoverflow.com/questions/15804169/the-safari-javascript-engine-in-webkit
• http://www.html5rocks.com/en/tutorials/speed/script-loading/
• http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html
• http://royal.pingdom.com/2013/03/21/browser-wars-2013/
• http://www.html5rocks.com/en/tutorials/memory/effectivemanagement
• http://www.html5rocks.com/en/tutorials/speed/static-mem-pools
• http://www.html5rocks.com/en/tutorials/performance/mystery/
• http://en.wikipedia.org/wiki/V8_(JavaScript_engine)
• http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/
• https://code.google.com/p/v8/
Q?
Join us
Если Вам захотелось присоединиться к команде Devexperts,
пишите и звоните нам:
Тел.: (812) 438-16-26
E-mail: job@devexperts.com
Вакансии: hh.ru и itmozg.ru.
Наши новости: devexperts.com и ВКонтакте.
Контакты
Мы создаем качественное и эффективное ПО для
комплексной автоматизации брокерской, биржевой и финансовой
деятельности
Devexperts
Наша команда – это 300 профессионалов в области программирования,
тестирования и поддержки ПО

Más contenido relacionado

La actualidad más candente

Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser InternalsSiva Arunachalam
 
Firefox Architecture Overview
Firefox Architecture OverviewFirefox Architecture Overview
Firefox Architecture OverviewAnant Narayanan
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view朋 王
 
DHTML - Dynamic HTML
DHTML - Dynamic HTMLDHTML - Dynamic HTML
DHTML - Dynamic HTMLReem Alattas
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKitJoone Hur
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overviewBin Chen
 
Languages and tools for web programming
Languages and tools for web  programmingLanguages and tools for web  programming
Languages and tools for web programmingAlamelu
 
Chrome Internals: Paint and Composition
Chrome Internals: Paint and CompositionChrome Internals: Paint and Composition
Chrome Internals: Paint and CompositionDzmitry Varabei
 
Project First presentation about introduction to technologies to be used
Project First presentation about introduction to technologies to be usedProject First presentation about introduction to technologies to be used
Project First presentation about introduction to technologies to be usedarya krazydude
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeChang W. Doh
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesWebStackAcademy
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering PipelineHyungwook Lee
 
Introducing asp
Introducing aspIntroducing asp
Introducing aspaspnet123
 
Oracle Forms Creation
Oracle Forms CreationOracle Forms Creation
Oracle Forms CreationSekhar Byna
 
Webform and Drupal 8
Webform and Drupal 8Webform and Drupal 8
Webform and Drupal 8Philip Norton
 

La actualidad más candente (20)

Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
 
Firefox Architecture Overview
Firefox Architecture OverviewFirefox Architecture Overview
Firefox Architecture Overview
 
How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
 
Android chromium web view
Android chromium web viewAndroid chromium web view
Android chromium web view
 
DHTML - Dynamic HTML
DHTML - Dynamic HTMLDHTML - Dynamic HTML
DHTML - Dynamic HTML
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
Chrome & Webkit overview
Chrome & Webkit overviewChrome & Webkit overview
Chrome & Webkit overview
 
Languages and tools for web programming
Languages and tools for web  programmingLanguages and tools for web  programming
Languages and tools for web programming
 
Chrome Internals: Paint and Composition
Chrome Internals: Paint and CompositionChrome Internals: Paint and Composition
Chrome Internals: Paint and Composition
 
Project First presentation about introduction to technologies to be used
Project First presentation about introduction to technologies to be usedProject First presentation about introduction to technologies to be used
Project First presentation about introduction to technologies to be used
 
Dhtml
DhtmlDhtml
Dhtml
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
 
Asp net
Asp netAsp net
Asp net
 
Web browser
Web browserWeb browser
Web browser
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP Services
 
Android Chromium Rendering Pipeline
Android Chromium Rendering PipelineAndroid Chromium Rendering Pipeline
Android Chromium Rendering Pipeline
 
Web component
Web componentWeb component
Web component
 
Introducing asp
Introducing aspIntroducing asp
Introducing asp
 
Oracle Forms Creation
Oracle Forms CreationOracle Forms Creation
Oracle Forms Creation
 
Webform and Drupal 8
Webform and Drupal 8Webform and Drupal 8
Webform and Drupal 8
 

Destacado

How to improve java performance
How to improve java performanceHow to improve java performance
How to improve java performanceDevexperts
 
Effective websites development
Effective websites developmentEffective websites development
Effective websites developmentDevexperts
 
Drd secr final1_3
Drd secr final1_3Drd secr final1_3
Drd secr final1_3Devexperts
 
20130420 bitbyte
20130420 bitbyte20130420 bitbyte
20130420 bitbyteDevexperts
 
Windows, doors and secret passages: approaches to the space organization in t...
Windows, doors and secret passages: approaches to the space organization in t...Windows, doors and secret passages: approaches to the space organization in t...
Windows, doors and secret passages: approaches to the space organization in t...Devexperts
 
Codefreeze rus
Codefreeze rusCodefreeze rus
Codefreeze rusDevexperts
 
Codefreeze eng
Codefreeze engCodefreeze eng
Codefreeze engDevexperts
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDevexperts
 
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems ReviewRoman Elizarov
 

Destacado (9)

How to improve java performance
How to improve java performanceHow to improve java performance
How to improve java performance
 
Effective websites development
Effective websites developmentEffective websites development
Effective websites development
 
Drd secr final1_3
Drd secr final1_3Drd secr final1_3
Drd secr final1_3
 
20130420 bitbyte
20130420 bitbyte20130420 bitbyte
20130420 bitbyte
 
Windows, doors and secret passages: approaches to the space organization in t...
Windows, doors and secret passages: approaches to the space organization in t...Windows, doors and secret passages: approaches to the space organization in t...
Windows, doors and secret passages: approaches to the space organization in t...
 
Codefreeze rus
Codefreeze rusCodefreeze rus
Codefreeze rus
 
Codefreeze eng
Codefreeze engCodefreeze eng
Codefreeze eng
 
Dynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programsDynamic data race detection in concurrent Java programs
Dynamic data race detection in concurrent Java programs
 
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems ReviewACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
ACM ICPC 2014 NEERC (Northeastern European Regional Contest) Problems Review
 

Similar a Browsers. Magic is inside.

Vlad zelinschi optimizing the critical rendering path
Vlad zelinschi   optimizing the critical rendering pathVlad zelinschi   optimizing the critical rendering path
Vlad zelinschi optimizing the critical rendering pathCodecamp Romania
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedGil Fink
 
Web Components at Scale, HTML5DevConf 2014-10-21
Web Components at Scale, HTML5DevConf 2014-10-21Web Components at Scale, HTML5DevConf 2014-10-21
Web Components at Scale, HTML5DevConf 2014-10-21Chris Danford
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflowPeter Kaizer
 
WEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptxWEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptxsilvers5
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform AppsFITC
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Mediacurrent
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentAkihiro Ikezoe
 
Web components, so close!
Web components, so close!Web components, so close!
Web components, so close!Aleks Zinevych
 
Modern Web UI - Web components
Modern Web UI - Web componentsModern Web UI - Web components
Modern Web UI - Web componentsMike North
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...BIWUG
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplatesPaul Hunt
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT ProsPaul Hunt
 

Similar a Browsers. Magic is inside. (20)

Vlad zelinschi optimizing the critical rendering path
Vlad zelinschi   optimizing the critical rendering pathVlad zelinschi   optimizing the critical rendering path
Vlad zelinschi optimizing the critical rendering path
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Web Components at Scale, HTML5DevConf 2014-10-21
Web Components at Scale, HTML5DevConf 2014-10-21Web Components at Scale, HTML5DevConf 2014-10-21
Web Components at Scale, HTML5DevConf 2014-10-21
 
web development
web developmentweb development
web development
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
 
025444215.pptx
025444215.pptx025444215.pptx
025444215.pptx
 
WEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptxWEB DEVELOPMENT.pptx
WEB DEVELOPMENT.pptx
 
Performance (browser)
Performance (browser)Performance (browser)
Performance (browser)
 
Html,CSS & UI/UX design
Html,CSS & UI/UX designHtml,CSS & UI/UX design
Html,CSS & UI/UX design
 
25444215.pptx
25444215.pptx25444215.pptx
25444215.pptx
 
web development
web developmentweb development
web development
 
Designing True Cross-Platform Apps
Designing True Cross-Platform AppsDesigning True Cross-Platform Apps
Designing True Cross-Platform Apps
 
Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG) Atlanta Drupal User Group (ADUG)
Atlanta Drupal User Group (ADUG)
 
Incremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend DevelopmentIncremental DOM and Recent Trend of Frontend Development
Incremental DOM and Recent Trend of Frontend Development
 
Web components, so close!
Web components, so close!Web components, so close!
Web components, so close!
 
Modern Web UI - Web components
Modern Web UI - Web componentsModern Web UI - Web components
Modern Web UI - Web components
 
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
SharePoint Saturday Belgium 2014 - Using JSLink and Display Templates with th...
 
Spsbe using js-linkanddisplaytemplates
Spsbe   using js-linkanddisplaytemplatesSpsbe   using js-linkanddisplaytemplates
Spsbe using js-linkanddisplaytemplates
 
ppt.ppt
ppt.pptppt.ppt
ppt.ppt
 
#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros#SPSLondon - Session 2 JSLink for IT Pros
#SPSLondon - Session 2 JSLink for IT Pros
 

Último

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Último (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

Browsers. Magic is inside.

  • 1. Browsers Magic is inside Alex Tokarenko tokarenko@devexperts.com
  • 2. What we will talk about • Browser internal components • Main processes during page load or dynamic changes • Performance tips and tricks • Chrome Devtools in action
  • 3. Why we will talk about it? • Mostly used software in the world • Internet Explorer 90% dominance • Nowadays browsers not a "black box“ - they became opensource
  • 5. Referenced rendering engines All examples will be from source code of WebKit, Blink, Gecko Why? – Because they are open sourced
  • 6. Rendering engine basic flow Parse HTML to construct DOM tree Render tree construction Layout the render tree Paint
  • 8. Parse HTML to construct DOM tree Render tree construction Layout the render tree Paint
  • 9. HTML Parser doings • Parses input HTML tag soup • Fixes web author mistakes • Requests to load resources • Constructs DOM tree
  • 11. HTML Language • HTML approach is very "forgiving“ • HTML is not a context free grammar • Can’t be parsed by XML parser • Can’t be parsed by regular parsers (BNF) • Defined in DTD (Document Type Definition)
  • 12. Error tolerance example #1 WebKit source code: if (m_inStrayTableContent && localName == tableTag) popBlock(tableTag);
  • 13. Error tolerance example #2 • Start with closed tag • Not closed tags at all Handling </BR> in WebKit code: if (t->isCloseTag(brTag) && m_document->inCompatMode()) { reportError(MalformedBRError); t->beginTag = true; }
  • 15. Special parsing algorithm because • Forgiving nature of the language • Historically lack of documentation developers • Huge amount of invalid code HTML parsers 'guesses' the intention of the code author
  • 16. Resources loading during parsing • Scripts • CSS • Other resources
  • 17. Scripts loading VS Page Latency Script is loaded and executed immediately when achieved Parsing halts until script execution
  • 18. Recommendation • Put the script at the end of document • HTML5 defer and async attributes
  • 19. CSS Loading VS Latency Can block scripts execution until loaded
  • 20. Browsers are smart Speculative parsers find resources references to load in parallel threads
  • 21. Parse HTML to construct DOM tree Render tree construction Layout the render tree Paint
  • 22. Rendering tree Holds: • Tree of visual elements in display order • Style information, computed metrics • Shadow DOM tree
  • 24. Out of basic flow • “display:none” elements are excluded • Absolute and fixed position elements • Non visual elements like <head></head>
  • 26. Performance impact • Style is a very large construct • Lookup for matching CSS rule can cause performance issues div div div div { … } • Applying rules is complex
  • 27. Browsers are smart • Style objects can be shared between render objects • Browser collect changes and process them on demand
  • 28. Parse HTML to construct DOM tree Render tree construction Layout the render tree Paint
  • 29. What is Layout process? • Calculation of geometry and position • Flow based model (left-to-right, top-to-bottom) • Coordinate system relative to top left coordinates
  • 30. How Layout Process Works • Parent determines its width • Parent places children with right coordinates • Accumulate children their heights • Caches calculated values
  • 31. Global Layout • Occurs at least ones for whole tree • Happens on global changes (like window resize)
  • 32. Incremental Layout Happens: • When new element added to the tree • When geometric attributes changes
  • 33. Browser is smart Usually changes are batched and done asynchronously However script accessing geometry attributes can force synchronous layout
  • 34. Synchronous layout Synchronous layout demo // Animation loop function update(timestamp) { for(var m = 0; m < movers.length; m++) { movers[m].style.left = ((Math.sin(movers[m].offsetTop + timestamp/1000)+1) * 500) + 'px'; } raf = window.requestAnimationFrame(update); };
  • 35. Painting • Traversing the tree from the root • Global and Incremental paint • Dirty bit system
  • 36. Painting order CSS2 specification defines the order of the painting elements: – background color – background image – border – children – outline
  • 37. What can trigger REcalculations? • Changes style will cause restyle and repaint of the element; • Changes of position will cause relayout and repaint; • Adding a DOM node will cause relayout and repaint of the node. • Major changes will cause invalidation of caches, relayout and repaint
  • 38. Recommendations o Cache style values if possible for read o Change Non-visible element and set it to visible o Use documentFragment or cloned element and then swap it with old one o Use classes instead of inline styles o Try to keep changes lower in the tree
  • 39. How we make a deal with all this stuff?! • Browser dev tools – Timeline – Logs – Heap profiler – Object allocations – CPU Profiler
  • 40. Links • http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/ • http://taligarsiel.com/Projects/howbrowserswork1.htm • https://developers.google.com/chrome-developer-tools/docs/demos/too-much-layout/ • http://www.phpied.com/rendering-repaint-reflowrelayout-restyle/ • https://www.webkit.org/blog/114/webcore-rendering-i-the-basics/ • http://www.chromium.org/blink • http://msdn.microsoft.com/en-us/library/aa741312(v=vs.85).aspx • https://lists.webkit.org/pipermail/webkit-dev/2013-April/024436.html • http://stackoverflow.com/questions/15804169/the-safari-javascript-engine-in-webkit • http://www.html5rocks.com/en/tutorials/speed/script-loading/ • http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html • http://royal.pingdom.com/2013/03/21/browser-wars-2013/ • http://www.html5rocks.com/en/tutorials/memory/effectivemanagement • http://www.html5rocks.com/en/tutorials/speed/static-mem-pools • http://www.html5rocks.com/en/tutorials/performance/mystery/ • http://en.wikipedia.org/wiki/V8_(JavaScript_engine) • http://coding.smashingmagazine.com/2012/11/05/writing-fast-memory-efficient-javascript/ • https://code.google.com/p/v8/
  • 41. Q?
  • 43. Если Вам захотелось присоединиться к команде Devexperts, пишите и звоните нам: Тел.: (812) 438-16-26 E-mail: job@devexperts.com Вакансии: hh.ru и itmozg.ru. Наши новости: devexperts.com и ВКонтакте. Контакты
  • 44. Мы создаем качественное и эффективное ПО для комплексной автоматизации брокерской, биржевой и финансовой деятельности Devexperts
  • 45. Наша команда – это 300 профессионалов в области программирования, тестирования и поддержки ПО