Arhitectura browser-ului Web

30
Arhitectura browser-ului Web Dr. Sabin Buraga Facultatea de Informatică, UAIC Iași www.purl.org/net/busaco

description

Most important aspects regarding the internal architecture of a Web browser. A presentation prepared to be delivered within InfoEducatie 2012, a national IT contest for high-school students.

Transcript of Arhitectura browser-ului Web

Page 1: Arhitectura browser-ului Web

Arhitectura browser-ului Web

Dr. Sabin Buraga

Facultatea de Informatică, UAIC Iași www.purl.org/net/busaco

Page 2: Arhitectura browser-ului Web

De ce ar trebui să știm care-i arhitectura generală a unui navigator Web?

Firefox Chrome

MSIE Opera

Page 3: Arhitectura browser-ului Web

user interface

browser engine

rendering engine

net work

JS inter-preter

XML parser

display backend

da

ta p

ersiste

nce

Page 4: Arhitectura browser-ului Web

user interface

address bar

back/forward button

bookmarking menu

Page 5: Arhitectura browser-ului Web

browser engine

“punte” între interfața cu utilizatorul (UI)

și rendering engine

Page 6: Arhitectura browser-ului Web

browser engine

“punte” între interfața cu utilizatorul (UI)

și rendering engine

kernel

plugins

extensions

add-ons

Page 7: Arhitectura browser-ului Web

rendering engine

realizează redarea conținutului

(e.g., documente HTML)

Page 8: Arhitectura browser-ului Web

rendering engine

realizează redarea conținutului

(e.g., documente HTML)

uzual:

procesarea arborelui DOM

asociat unei pagini Web

cu aplicarea proprietăților CSS aferente

în vederea redării într-o zonă de afișare

Page 9: Arhitectura browser-ului Web

rendering engine

include un interpretor (parser)

conform tipului de document Web – DTD

HTML 4

XHTML

HTML 5

www.quirksmode.org

Page 10: Arhitectura browser-ului Web

rendering engine

HTML Html

Element

HTML Body

Element

HTML Paragraph

Element

Text

HTML Head

Element

HTML Title

Element

www.w3.org/DOM/

cod sursă HTML

arbore DOM

Page 11: Arhitectura browser-ului Web

rendering engine

arbore DOM

arbore de redare (render tree)

Page 12: Arhitectura browser-ului Web

rendering engine

arbore de redare

generare aranjament vizual (layout)

Page 13: Arhitectura browser-ului Web

rendering engine

arbore de redare

generare aranjament vizual (layout)

calculul lățimii fiecărui bloc de conținut

(width calculation)

decizii privind line breaking

…și altele

Page 14: Arhitectura browser-ului Web

rendering engine

generare layout

afișare layout (painting)

Page 15: Arhitectura browser-ului Web

rendering engine

generare layout

afișare layout (painting)

după afișare, pot apărea schimbări de redare

re-layout și/sau re-paint

Page 16: Arhitectura browser-ului Web

rendering engine

Gecko WebKit

Trident Presto

exemplificări:

Gecko (Firefox)

Presto (Opera)

Trident (MSIE)

WebKit (Chrome, Safari, iOS)

Page 17: Arhitectura browser-ului Web

fluxul de activități realizate de Gecko

https://developer.mozilla.org/en/Gecko

Page 18: Arhitectura browser-ului Web

activitățile derulate în cazul WebKit

www.webkit.org

Page 19: Arhitectura browser-ului Web

rendering engine

deoarece – în mod normal – stilurile CSS

nu modifică arborele DOM, procesarea poate avea loc

independent de încărcarea fișierelor CSS

Page 20: Arhitectura browser-ului Web

rendering engine

deoarece modelul de procesare e sincron,

programele JavaScript vor trebui executate imediat

ce procesorul întâlnește codul

(eventual, încărcat de la o adresă Web externă)

Page 21: Arhitectura browser-ului Web

rendering engine

implicit, procesul de rendering e oprit

până ce codul JavaScript este executat complet

Page 22: Arhitectura browser-ului Web

rendering engine

procesul de rendering poate fi optimizat

(speculative parsing)

încărcare paralelă a resurselor

multi-procesare

Page 23: Arhitectura browser-ului Web

networking

folosit pentru transferuri de date

de pe Internet

HTTP

HTTPS

SPDY

Page 24: Arhitectura browser-ului Web

networking

folosit pentru transferuri de date

de pe Internet

numărul conexiunilor paralele e limitat

(uzual: 2—6)

Page 25: Arhitectura browser-ului Web

display (UI) backend

răspunzător cu afișarea componentelor

de interfață comune (ferestre, butoane de tip radio,…)

Page 26: Arhitectura browser-ului Web

JavaScript interpreter

interpretează și execută

programele JavaScript

la nivel de client

Carakan (Opera)

Chakra (Microsoft)

Nitro, JavaScriptCore (Apple)

SpiderMonkey, IonMonkey, Rhino (Mozilla)

V8 (Google)

Page 27: Arhitectura browser-ului Web

data persistence

responsabil cu stocarea datelor

pe calculatorul client

Page 28: Arhitectura browser-ului Web

data persistence

responsabil cu stocarea datelor

pe calculatorul client

cookie-uri

localStorage – HTML5

cache

Page 29: Arhitectura browser-ului Web
Page 30: Arhitectura browser-ului Web

Arhitectura browser-ului Web