Middle
36
questionbank

Как происходит загрузка веб-страницы?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech
  1. Пользователь вводит URL в адресную строку браузера или кликает по ссылке.
  2. Парсинг URL: Браузер разбирает URL для определения протокола, домена, порта и пути.
  3. Поиск IP-адреса: Браузер проверяет кеш DNS, затем кеш операционной системы, затем кеш роутера. Если адрес не найден локально, отправляется запрос к DNS-серверу для получения IP-адреса доменного имени.
  4. Установление TCP-соединения (Handshake): Браузер устанавливает TCP-соединение с сервером по полученному IP-адресу (трехстороннее рукопожатие: SYN -> SYN-ACK -> ACK).
  5. Отправка HTTP-запроса: Браузер отправляет HTTP-запрос (обычно GET) на сервер с указанием требуемого ресурса (путь), заголовков (User-Agent, Accept-Encoding, Cookie и т.д.) и тела запроса (если есть).
    http
  6. Обработка запроса сервером: Сервер получает запрос, обрабатывает его (например, выполняет скрипты на стороне сервера) и формирует HTTP-ответ.
  7. Отправка HTTP-ответа: Сервер отправляет HTTP-ответ обратно браузеру. Ответ включает статус-код (например, 200 OK), заголовки (Content-Type, Content-Length, Cache-Control и т.д.) и тело ответа (содержимое запрошенного ресурса, например, HTML-файл).
    http
  8. Парсинг HTML и построение DOM: Браузер начинает получать HTML-код и парсить его, создавая объектную модель документа (DOM - Document Object Model) в памяти. DOM представляет дерево элементов HTML.
  9. Загрузка и обработка ресурсов: При парсинге HTML браузер встречает ссылки на другие ресурсы (CSS, JavaScript, изображения, шрифты и т.д.). Для каждого ресурса выполняются шаги 3-7 (поиск IP, TCP-соединение (если нужно), HTTP-запрос/ответ). Загрузка этих ресурсов может происходить параллельно (ограничено количеством одновременных соединений).
  10. Построение CSSOM: Браузер парсит CSS-файлы и блоки <style> в HTML, создавая объектную модель CSS (CSSOM - CSS Object Model). CSSOM представляет стили, применимые к элементам на странице.
  11. Построение Render Tree: Браузер объединяет DOM и CSSOM для построения дерева рендеринга (Render Tree). Render Tree содержит только видимые элементы страницы и их стили. Элементы с display: none не включаются.
  12. Layout (Reflow): Браузер вычисляет точное положение и размеры каждого элемента на макете, основываясь на Render Tree, размерах окна просмотра и стилях.
  13. Painting (Repaint): Браузер рисует каждый элемент на экране в рассчитанных позициях и с примененными стилями. Это происходит на слоях.
  14. Composite: Браузер объединяет нарисованные слои в конечное изображение, которое отображается на экране пользователя.
  15. Выполнение JavaScript: По мере загрузки и парсинга скриптов, JavaScript-код выполняется. Выполнение JavaScript может влиять на DOM и CSSOM, вызывая повторные шаги Layout и Painting (Relayout/Repaint).

Ключевые этапы отображения контента:

  • DOMContentLoaded: Событие срабатывает, когда браузер полностью загрузил и распарсил HTML-документ и построил DOM-дерево, но дожидается загрузки таблиц стилей, изображений и подфреймов.
  • Load: Событие срабатывает, когда вся страница, включая изображения, скрипты, стили и другие ресурсы, полностью загружена.