Подтвердить что ты не робот

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

Хотелось бы создать презентацию о том, как работает браузер, знает ли кто-нибудь точную последовательность жизненного цикла, которая возникает всякий раз, когда запрашивается URL-адрес браузера?

Каковы шаги, которые происходят после получения ответа от сервера в терминах:

  • Рендеринг - приложение для фильтров CSS, webkit и т.д.
  • Javascript - Загрузка и запуск
  • Приложение CSS
  • DOM Construction/в какой момент написано DOM и как?
  • Cookies
  • Другие связанные с сетью мероприятия и т.д.

- не уверен, что если это даже правильный порядок...

- это то же самое во всех браузерах или разных браузерах имеют разные жизненные циклы?

Примечание - хорошо написанный ответ с подробностями, объясняющими каждый шаг Ced ниже. то, что я действительно искал, был "Критический путь рендеринга" . Общие этапы процесса хорошо объясняются другими хорошими ответами.

Слава Богу, и хорошая работа всем!

4b9b3361

Ответ 1

То, о чем вы говорите, - это путь критической визуализации.

Точка 1., 3. и 4. может быть возобновлена ​​как таковая:

  • Построение объектной модели документа (DOM)
  • Построение объектной модели CSS (CSSOM)
  • Построение дерева рендеринга
  • Layout
  • Paint.

Вот разбивка того, что происходит за сценой.

1. Построение объекта DOM.

Первым шагом является создание DOM. Действительно, то, что вы получаете от сети, - это байты, а браузер использует так называемое дерево DOM. Поэтому ему необходимо преобразовать эти байты в дерево DOM.

введите описание изображения здесь

  • Вы получаете страницу как байты. Ваш браузер преобразует его в текст.
  • Текст преобразуется в узлы.
  • узлы преобразуются в "объекты"
  • Построение дерева, называемого DOM TREE.

Вы можете проверить инструмент разработчика, чтобы узнать, сколько времени потребуется.

введите описание изображения здесь

Здесь мы видим, что оно заняло 4.938мс.

Когда этот процесс будет завершен, браузер будет иметь полный контент страницы, но чтобы иметь возможность отображать браузер, необходимо дождаться объектной модели CSS, также известной как событие CSSOM, которая сообщит браузеру, как элементы должен выглядеть так, как показано на рисунке.

2. Обработка CSS

Для css он такой же, как и выше, браузеру необходимо преобразовать этот файл в CSSOM:

введите описание изображения здесь

Css также является древовидной структурой. Действительно, если вы поместите размер шрифта в родительский элемент, тогда дети наследуют его.

введите описание изображения здесь

Это называется повторным вычислением стиля в инструменте разработчика

введите описание изображения здесь

CSS является одним из наиболее важных элементов критического пути рендеринга, поскольку браузер блокирует показ страницы до тех пор, пока не получит и не обработает все файлы css на вашей странице, CSS блокирует рендеринг

3. Дерево рендеринга

CSSOM и DOM объединяются для отображения.

введите описание изображения здесь

4. Layout

Все должно быть рассчитано в пикселях. Поэтому, когда вы говорите, что элемент имеет ширину 50%, браузер за сценой преобразуется в пикселях:

введите описание изображения здесь

При каждом обновлении дерева рендеринга или изменении размера окна просмотра браузер должен снова запустить макет.

5.Paint

Этот шаг преобразует все это в пиксели на экране. Это шаг рисования.


Javascript

Для жизненного цикла JavaScript вы можете найти здесь здесь.

Суть его в том, что событие, которое вы, скорее всего, заботитесь, это DOMContentLoaded. Это когда DOM готов.

Когда браузер первоначально загружает HTML и сталкивается с <script>...</script> в тексте, он не может продолжить создание DOM. Это должен выполнить script прямо сейчас. Так что DOM Content Loaded может произойти только после выполнения всех таких скриптов.

Внешние скрипты (с помощью src) также помещают DOM-здание в паузу, пока script загружается и выполняется. Так что DOM Content Loaded ждет внешние скрипты.

Единственным исключением являются внешние скрипты с async и отсрочка атрибутов. Они говорят браузеру продолжать обработку без ожидая сценариев. Таким образом, пользователь может видеть страницу перед сценариями завершающая загрузка, хорошая для производительности.

Кроме того, где JavaScript во всем этом?

Ну, это выполняется между репайнами. Однако он блокирует. Браузер будет ожидать выполнения JavaScript, прежде чем перерисовать страницу. Это означает, что если вы хотите, чтобы ваша страница имела хороший ответ (много кадров в секунду), тогда JS должен быть относительно недорогим.


Печенье

При получении HTTP-запроса сервер может отправить заголовок Set-Cookie с ответом. Файл cookie обычно хранится в браузере, а затем значение cookie отправляется вместе с каждым запросом, сделанным на том же сервере, что и содержимое HTTP-заголовка Cookie. Кроме того, можно указать задержку истечения срока действия, а также ограничения для определенного домена и пути, ограничивающие продолжительность и на какой сайт отправляется куки файл.


Для сетевого контента это выходит за рамки жизненного цикла браузера, о котором идет речь. Это тоже то, о чем я не очень разбираюсь, но вы можете прочитать здесь TCP здесь. Что вам может быть интересно, это handshake.


Источники:

Ответ 2

Вы можете найти много объяснений по этой теме, но я думаю, что следующее является самым простым объяснением, чтобы понять, как браузер отображает веб-страницу.

  • Вы вводите URL-адрес в адресную строку в предпочитаемом браузере.
  • Браузер анализирует URL-адрес, чтобы найти протокол, хост, порт и путь, и он формирует HTTP-запрос (это, скорее всего, протокол).
  • Чтобы добраться до хоста, сначала нужно перевести читаемый человеком хост в IP-номер, и он делает это, выполняя поиск DNS на хосте
  • Затем сокет должен быть открыт с компьютера пользователя на этот IP-адрес номер на указанном порту (чаще всего порт 80)
  • Когда соединение открыто, HTTP-запрос отправляется хосту
  • Хост перенаправляет запрос серверному программному обеспечению (чаще всего Apache), настроенному на прослушивание на указанном порту
  • Сервер проверяет запрос (большинство часто только путь) и запускает серверный плагин, необходимый для обрабатывать запрос (в соответствии с используемым вами языком сервера, PHP, Java,.NET, Python?)
  • Плагин получает доступ к полному запросу и начинает подготовку ответа HTTP.
  • Чтобы построить ответ, доступ к базе данных (скорее всего). Выполняется поиск базы данных на основе параметров в пути (или данных) запроса
  • Данные из базы данных вместе с другой информацией, которую плагин решает добавить, объединяются в длинную строку текста (возможно, HTML).
  • Плагин объединяет эти данные с некоторыми метаданными (в виде заголовков HTTP) и отправляет ответ HTTP в браузер.
  • Браузер получает ответ и анализирует HTML-код (который с вероятностью 95% разбит) в ответе.
  • Дерево DOM построено из разбитого HTML, и новые запросы поступают на сервер для каждого нового ресурса, который находится в источнике HTML (как правило, изображения, таблицы стилей и файлы JavaScript). Вернитесь к шагу 3 и повторите для каждого ресурса.
  • Таблицы стилей анализируются, и каждая информация рендеринга привязывается к соответствующему node в дереве DOM.
  • Javascript анализируется и выполняется, а узлы DOM перемещаются, и информация о стиле обновляется соответствующим образом.
  • Браузер отображает страницу на экране в соответствии с деревом DOM и  информацию о стиле для каждого node, и вы видите страницу на экране.

Источник

Ответ 3

Я хотел бы предложить следующее для тех, кто хотел бы посмотреть, что происходит, это дешевый ответ, но было бы полезно объяснить, как браузер извлекает его каскад файлов для создания содержимого URL-адреса (в этом case a html).

  • Перейдите на страницу, которую вы хотите использовать для демонстрации в Chrome (или используйте эту страницу для довольно сложного примера).
  • Откройте консоль (Ctrl + Shift + i)
  • Выберите "Сеть" из параметров
  • Хит F5

Играйте с настройками. Вы также должны посмотреть график, созданный на вкладке "Производительность"

  1. Выберите "Производительность" из параметров
  2. Хит F5

Здесь может быть полезно снизить производительность, поэтому вы можете смотреть ее в режиме реального времени (медленно), если это то, что вы хотите продемонстрировать.

Важная вещь (с использованием HTML-страницы в качестве примера), порядок рендеринга/применения css/javascript, зависит от того, где он появляется в DOM. Возможно выполнить script в любой момент после загрузки, при условии наличия необходимых ресурсов. Css может быть частью HTML-документа (inline), или он может появляться с очень загруженного сервера и занять 10-20 секунд, прежде чем он может быть применен. Надеюсь, что это поможет -R

Ответ 4

Некоторые другие полезные ресурсы:

  • Firefox 3D tilt plugin поможет визуализировать веб-страницы и как они представляют контент в разных слоях. Слои в 3D-плагине

  • вкладка производительности Chrome - хорошая визуализация того, что происходит во время загрузки страницы, и как построено дерево доминирования. Это помогает идентифицировать узкие места в процессе рендеринга.

  • Вы можете увидеть множество функциональных возможностей вашего браузера, таких как кешированный контент HTML, кешированные изображения, кэш DNS, открытые порты и т.д., открыв chrome://net-internals/.

Ответ 5

Я боюсь, что вы имеете в виду, когда URL-адрес браузера запрашивается пользователем, потому что вы указываете активность other, что может быть очень много.

После получения исходного документа, который может содержать пользовательский контент, разметку и даже изображения:

Существует много многих блок-схем, таких как аутентификация, SSL, CORS и т.д. Хотя ответ Ced очень подробный (+1!), это только верхушка айсберга. Возможно, вы должны KISS его ради аудитории презентации, ваш выбор.