Middle
Браузер чӣ гуна вебсаҳифаро коркард мекунад?
sobes.tech AI
Ҷавоб аз AI
Процеси обработки веб-страницы браузер метавонад ба чанд марҳила тақсим шавад:
-
Пурсиш ва гирифтани манбаъ:
- Корбар URL-ро дар сатрии суроға ворид мекунад ё ба пайванд клик мекунад.
- Браузер HTTP-пурсишро ба сервер мефиристад.
- Сервер пурсишро коркард мекунад ва ҷавоб, одатан ҳуҷҷати HTML, мефиристад.
-
Таҳлили синтаксисӣ (Parsing):
- Браузер ҳуҷҷати HTML-ро ба шакли байт мегирад.
- Ин байтҳо мувофиқи кодикунии нишоншуда ба аломатҳо декод мешаванд.
- Парсери HTML ҳуҷҷатро ҳарф ба ҳарф таҳлил мекунад ва дарахти DOM (Document Object Model)-ро месозад. DOM сохтори мантиқии ҳуҷҷатро намояндагӣ мекунад.
- Вақте ки теги
<link>(барои CSS) ё<script>(барои JavaScript) пайдо мешаванд, браузер ин манбаъҳоро параллелӣ бо таҳлили HTML боргирӣ мекунад.
-
Тамоссозии CSSOM:
- Парсери CSS қоидаҳои CSS-ро аз
<style>тегҳо,<link>тегҳо ва стилҳои inline таҳлил мекунад. - Бар асоси ин қоидаҳо, дарахти CSSOM (CSS Object Model) сохта мешавад, ки ҳамаи услубҳоро барои ҳар як унсури саҳифа дар бар мегирад.
- Парсери CSS қоидаҳои CSS-ро аз
-
Тамоссозии дарахти рендеринг (Render Tree):
- Render Tree DOM ва CSSOM-ро мепайвандад. Он танҳо унсурҳое, ки дар саҳифа намоиш дода мешаванд, ва услубҳои онҳоро дорад.
- Унсурҳое, ки қоидаи CSS
display: none;доранд, дар Render Tree дохил намешаванд.
-
Тарҳрезӣ (Layout / Reflow):
- Браузер андозаи дақиқи геометриро ва ҷойгиршавии ҳар як унсурро дар асоси Render Tree ҳисоб мекунад. Ин раванд Layout ё Reflow ном дорад.
- Layout дар аввалин бор сохтани Render Tree, ва инчунин вақте ки андозаи тиреза тағйир меёбад, илова ё хориҷ кардани унсурҳо ё тағйир додани услубҳо, иҷро мешавад.
-
Рисориш (Painting / Repaint):
- Браузер ҳар унсурро дар экран бо истифода аз маълумоти Render Tree ва натиҷаҳои қадами Layout мекашад.
- Рисориш инчунин метавонад вақте ки хусусиятҳои намоён, мисли ранг, фон, шаффофият, тағйир меёбанд, ба амал ояд, бидуни тағйир додани геометрия (ин Repaint ном дорад).
-
Композиция:
- Унсурҳои рангкардашударо метавон дар қабатҳои гуногун барои оптимизатсияи раванди рангкашӣ ва анимацияҳо муттаҳид кард.
- Ин қабатҳо дар ниҳояти кор барои намоиши саҳифаи ниҳоӣ дар экран муттаҳид мешаванд.
-
Иҷрои скриптҳо:
- Вақте ки HTML парсер ба теги
<script>мерасад, таҳлили HTML муваққатан боздошта мешавад (ба таври стандартӣ), ва браузер JavaScript-ро боргирӣ, таҳлил ва иҷро мекунад. - JavaScript метавонад DOM ва CSSOM-ро тағйир диҳад, ки метавонад қадамҳои Layout ва Painting-ро такрор кунад.
- Атрибутҳои
asyncваdeferбарои теги<script>ба тартиб ва вақти иҷрои скриптҳо таъсир мерасонанд, ва имкон медиҳанд, ки таҳлили HTML идома ёбад.
- Вақте ки HTML парсер ба теги
Ин аст тасвире тақрибан дар бораи ҷараён:
HTTP Пурсиш
↓
HTML байтҳо
↓
HTML parser
→ CSS parser (параллел)
↓ ↓
DOM дарахт CSSOM дарахт
↓
Render дарахт
↓
Layout
↓
Рангкашӣ
↓
Компониг
↓
Экран
Иҷрои JavaScript метавонад дар марҳилаҳои гуногун боздошта шавад ва қадамҳоро такрор кунад:
HTML parser + `<script>` теги
↓
Паузаи таҳлили HTML
↓
Боргирии скрипт
↓
Таҳлили скрипт
↓
Иҷрои скрипт
↓
(Мумкин тағйир додани DOM/CSSOM → Тақвият додани Layout/Repaint)
↓
Идома додани таҳлили HTML
Фаҳмидани ин раванд барои оптимизатсияи иҷрои вебсайтҳо муҳим аст.