Принципы работы браузера. Загрузка сайта
Каждый день мы используем интернет, открывая окно браузера и вводя адрес сайта. Но как же сайт становится доступным? Какие действия делает браузер? Ответы на эти вопросы должен знать каждый разработчик. В этом уроке мы рассмотрим всю цепочку процессов, происходящих при открытии сайта.
Допустим, мы введём в адресной строке браузера yandex.ru. Как только мы нажмём Enter, браузер начнёт работу по схеме, показанной на рисунке ниже.
Этап 1
Если посмотреть на адрес любого сайта, можно выделить следующую структуру доменного имени. Для примера разберем структуру доменного имени www.yandex.ru. В этом адресе .ru является корневым доменом (доменом первого уровня), yandex является доменом второго уровня, www является доменом третьего уровня или поддоменом yandex.
Домен первого уровня по-другому может называться доменной зоной, определяющей региональную или тематическую принадлежность домена второго уровня. В данном случае .ru – зона, указывающая на региональную принадлежность сайта. А, например, зоны .com, .net и т.п. уже указывают на тематическую принадлежность сайта.
После того, как мы вводим в браузере адрес сайта, в первую очередь идёт запрос на сервер регистратора корневых доменов с целью проверить существование домена второго уровня в данной зоне (в нашем примере это yandex в зоне .ru) и получить адреса DNS-серверов.
DNS-серверы являются хранилищем набора инструкций по управлению доменом в зоне. При получении запроса о нахождении сервера yandex.ru, DNS-сервер возвращает IP-адрес сервера, на котором физически хранится сайт. Как только браузер получит адрес сервера, по нему он отправляет запрос за страницей сайта.
Хорошо, мы узнали как браузер получает страницу. Но как же сервер ее создает? Давайте разибраться дальше.
Этап 2
Сам по себе сервер не может что-либо создавать. Для этого ему нужны инструкции (скрипты). Их создают программисты серверной части или как их называют на английский манер server-side разработчики. Они создают архитектуру взаимодействия web-сервера и базы данных. Для чего же нужны web-сервер и база данных?
Одна из задач Web-сервера – это обработка инструкций (скриптов) для сервера. Их создают с помощью таких языков программирования как PHP, Python, Perl и других. База данных – это таблица или таблицы, в которых хранятся данные для отображения на сайте. Например, содержимое статей и новостей.
Таким образом, как только сервер получает запрос, Web-сервер начинает отправлять SQL-запросы для получения данных из БД, и по результатам запросов формирует страницу и передает её в браузер. Как только браузер получает страницу, он отображает ее, а также параллельно запрашивает следующие ресурсы, такие как CSS, JS, медиа-контент.
Хорошо, мы рассмотрели, как загружается страница при первом вводе адреса сайта. Но что же происходит, когда мы уже были на этом сайте? Наверное, вы уже догадались, что если бы при каждом посещении сайта браузер делал столько операций, то работало бы все гораздо медленней.
Действительно, каждый раз осуществлять запросы к DNS-серверам, запросы на загрузку ресурсов плохая идея! И разработчики браузеров это понимали. Поэтому, одной из частей браузера является кэш.
Кэш – это локальное хранилище данных, которое располагается на вашем устройстве. В него сохраняются данные полученные от DNS-сервера и сервера, где хранится сайт.
Но как же браузер понимает актуальность данных? Эту информацию он получает при получении данных от сервера. При каждом вторичном запросе он проверяет дату предыдущего запроса и в случае, если данные уже неактуальны, то заново загружает их.