Middle
Kuidas töötleb brauser veebilehte?
sobes.tech AI
Vastus AI-lt
Veebilehe töötlemise protsess brauseris võib jagada mitmeks etapiks:
-
Päring ja ressursi saamine:
- Kasutaja sisestab URL-i aadressiribal või klõpsab lingil.
- Brauser saadab HTTP-päringu serverile.
- Server töötleb päringu ja saadab vastuse, mis tavaliselt sisaldab HTML-dokumenti.
-
Süntaksi analüüs (Parsing):
- Brauser saab HTML-dokumendi baitidena.
- Need baitid dekodeeritakse märkideks vastavalt määratud kodeeringule.
- HTML parser analüüsib dokumenti märkide kaupa ja loob DOM puu (Document Object Model). DOM esindab dokumendi loogilist struktuuri.
- Kui leitakse
<link>(CSS) või<script>(JavaScript) sildid, algab nende ressursside allalaadimine paralleelselt HTML analüüsiga.
-
CSSOM-i loomine:
- CSS parser analüüsib
<style>siltide,<link>siltide ja inline stiilide CSS reegleid. - Nende reeglite põhjal luuakse CSSOM puu (CSS Object Model), mis sisaldab kõiki stiile iga lehe elemendi jaoks.
- CSS parser analüüsib
-
Render puu loomine:
- Render puu ühendab DOM-i ja CSSOM-i. See sisaldab ainult neid elemente, mis kuvatakse lehel, ning nende stiile.
- Elemendid, millele on määratud CSS reegel
display: none;, ei kuulu Render puusse.
-
Paigutus (Layout / Reflow):
- Brauser arvutab iga elemendi täpsed geomeetrilised mõõtmed ja asukoha, tuginedes Render puule. Seda protsessi nimetatakse Layout või Reflow.
- Layout toimub esimese Render puu loomise ajal ning ka siis, kui akna suurus muutub, elemente lisatakse või eemaldatakse, või muudetakse nende stiile (nt suurused, vahed).
-
Joonistamine (Painting / Repaint):
- Brauser joonistab iga elemendi ekraanile, kasutades Render puu infot ja Layouti tulemusi.
- Joonistamine võib toimuda ka, kui muudetakse elemendi nähtavaid omadusi, nagu värv, taust, läbipaistvus, ilma et muutuks selle geomeetria (seda nimetatakse Repaint).
-
Komponeerimine (Compositing):
- Joonistamise elemendid võivad olla ühendatud erinevates kihtides optimeerimiseks ja animatsioonideks.
- Need kihid ühendatakse, et kuvada lõplik leht ekraanil.
-
Skripti täitmine:
- Kui HTML parser jõuab
<script>sildini, peatub HTML analüüs ajutiselt (vaikimisi) ning brauser laadib alla, analüüsib ja täidab JavaScripti koodi. - JavaScript võib muuta DOM-i ja CSSOM-i, mis võib põhjustada uusi Layout ja Painting samme.
<script>sildiasyncjadeferatribuudid mõjutavad skriptide täitmise järjekorda ja aega, võimaldades jätkata HTML analüüsi.
- Kui HTML parser jõuab
Siin on protsessi ligikaudne visualiseerimine:
HTTP Päring
↓
HTML bait
↓
HTML parser
→ CSS parser (paralleelselt)
↓ ↓
DOM puu CSSOM puu
↓
Render puu
↓
Layout
↓
Joonistamine
↓
Komponeerimine
↓
Ekraani kuvamine
JavaScripti täitmine võib sekkuda erinevatesse etappidesse, põhjustades korduvaid samme:
HTML parser + Script sildid
↓
HTML analüüsi paus
↓
Skripti allalaadimine
↓
Skripti analüüs
↓
Skripti täitmine
↓
(Võib muuta DOM/CSSOM-i → põhjustada Layout/Repaint)
↓
HTML analüüsi jätkumine