Самую короткую формулировку видел в Гугле, но, думаю, она не всех устроит:

The browser parses the html (DOM) and gets the external resources in an array or stack-like structure. After the html is loaded, the browser starts to load the external resources in the structure in parallel and execute, until all resources are loaded. (Google)

  1. Браузер определяет, введённая строка - это URL или поисковый запрос. Если это URL, то делает разбор адреса:
http: //   domain.ru / index.html ? param1=1
[protocol] [host]      [resource]   [params]
  1. Резолв доменного имени в IP (для попадания данных в сетевой уровень передачи данных)
  • Из локального кэша
  • Из /etc/hosts
  • Из кэша ОС
  • Из обращения к DNS
  1. Handshake: Установка TCP соединения. // See also: Уровни сетевых протоколов

  2. Handshake: Проверка подлинности SSL сертификата. // See also: Как работает SSL/TLS-рукопожатие

  3. Формирование HTTP заголовков

  4. Отправка HTTP запроса

  5. Получение документа в виде HTML строки

  6. Парсинг HTML строки по алгоритмам из спецификации (операция в несколько потоков)

  7. Формирование DOM (что нужно отрисовать)

  8. Формирование CSSOM (как нужно отрисовать) // See also: Блокировка рендеринга CSS - Как это исправить?

  9. Формирование Render Tree (на основе DOM & CSSOM) - Набор объектов рендеринга (Webkit использует термин «renderer», или «render object», а Gecko — «frame»)

  10. Layout - Для каждого элемента render tree рассчитывается положение на странице. Браузеры используют поточный метод (flow), при котором в большинстве случаев достаточно одного прохода для размещения всех элементов.

  11. Paint - происходит отрисовка всего этого в браузере

  12. Repaint (перекрашивание без изменения формы) - В процессе взаимодействия пользователя со страницей, а также выполнения скриптов, она меняется, что требует повторного выполнения некоторых из вышеперечисленных операций

  13. Reflow (более затратный процесс, который включается при изменении размеров, положения элементов или при добавлении/удалении элементов) - Если же изменения затрагивают содержимое, структуру документа, положение элементов — происходит reflow (или relayout). Причинами таких изменений обычно являются:

  • Манипуляции с DOM (добавление, удаление, изменение, перестановка элементов);
  • Изменение содержимого, в т.ч. текста в полях форм;
  • Расчёт или изменение CSS-свойств;
  • Добавление, удаление таблиц стилей;
  • Манипуляции с атрибутом «class»;
  • Манипуляции с окном браузера — изменения размеров, прокрутка;
  • Активация псевдо-классов (например, :hover).

See also