23. USER INTERFACE
BROWSER ENGINE
RENDERING ENGINE
NETWORKING
JavaScript
INTERPRETER
UI BACKEND
DATAPERSISTENCE
V8, SpiderMonkey
WebKit, Gecko,
Blink, Trident
WEB APIs
23
BROWSER WEB APIs
24. WEB APIs
Web Sockets
Messaging
WebRTC
Canvas
SVG
WebGL
File API
File System API
Indexed DB
DOM
Drag and Drop
Fullscreen
Animation
Timing
Media
Pointer Lock
Web Audio
Browser
Shadow DOM
Typed Arrays
Web Workers
CSS Object Model
Selectors
BROWSER WEB APIs
25. Event Loop / Task Queue
Philip Roberts
http://latentflip.com/loupe
Event
loop
Call stack
BROWSER WEB APIs EVENT LOOP
macro
micro
micro
micro
task queue
33. HTML Parser
Tokeniser
Lexical Analyzer
(Flex => Bison)
Tree construction
Syntax analyser
DOM
Script
Execution
document.write();
document.appendChild();
element.innerHTML
BROWSER HTML PARSERWebKitRENDERING ENGINE
34. Tokeniser
Lexical Analyzer
(Flex => Bison)
Tree construction
Syntax analyser
<p> I <span>ma i n p
I ma i n s p a
</span> </p>
DOM
html
head body
p
span
I am in span
n
linkmeta
I am in p
div
img
<p>
I am in p
<span>
I am in span
</span>
</p>
BROWSER HTML PARSERWebKit EXAMPLERENDERING ENGINE
35. Dealing with Resources
• Render blocking
• Parser blocking
• Non blocking
BROWSER HTML PARSERWebKit DEALING WITH RESOURCESRENDERING ENGINE
36. No Resource
<html>
<head>
<title>Critical Path: No Style</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
BROWSER HTML PARSERWebKit DEALING WITH RESOURCES NO RESOURCESRENDERING ENGINE
49. Attachment
CSSOMDOM
BODY
p
I am in p
div
img
font-size: 16px;
font-size: 16px;
float: right;
font-size: 16px;
font-weight: bold;
BROWSER WebKit ATTACHMENTRENDERING ENGINE
57. 57
Summary
● Latency matters
● Browser is not so simple
● CSS selectors can be a tricky place
● Resources amount matters
● Every millisecond means a lot