Веб-сервер отправляет не весь сайт, а документы, запрашиваемые браузерами.
Например, когда вы открываете https://www.google.com/, браузер запрашивает у сервера документ https://www.google.com/
. Сервер обрабатывает запрос и отправляет обратно некоторый HTML-код.
Затем браузер проверяет, что сервер отправил. В данном случае это веб-страница HTML, поэтому она анализирует документ и ищет ссылочные сценарии, таблицы стилей, изображения, шрифты и т.д.
На этом этапе браузер завершил загрузку этого документа, но все еще не загрузил ссылочные документы. Он может сделать это или пропустить их. Обычные браузеры будут пытаться загрузить все ссылочные документы для лучшего просмотра. Если у вас есть блокировщик рекламы (например, Adblock) или плагин конфиденциальности (Ghostery, NoScript), он также может блокировать некоторые ресурсы.
Затем браузер загружает ссылочные документы один за другим, каждый раз явно запрашивая у сервера один ресурс. В нашем примере Google браузер найдет следующие ссылки, лишь некоторые из них:
(фактические файлы могут отличаться для разных пользователей, браузеров и сессий и могут меняться со временем)
Текстовые браузеры не загружают изображения, файлы Flash, видео HTML5 и т.д., Поэтому они загружают меньше данных.
@NathanOsman делает хорошее замечание в комментариях: иногда небольшие изображения встраиваются непосредственно в документы HTML, и в таких случаях их нельзя избежать. Это еще один прием, используемый для уменьшения количества запросов. Однако они очень малы, в противном случае накладные расходы на кодирование двоичного файла в base64 слишком велики. На Google.com таких изображений немного: (кодированный base64 размер / декодированный размер)
- Значок клавиатуры 19 × 11 (106 B / 76 B)
- Значок микрофона 28 × 38 (334 B / 248 B)
- Прозрачный GIF размером 1 × 1 px (62 B / 43 B), который отображается на вкладке « Ресурсы Chrome Dev Tools», но я не смог найти его в источнике - возможно, позже был добавлен с помощью JavaScript
- Поврежденный файл GIF размером 1 × 1 px, который появляется дважды (34 B / 23 B). Его цель для меня загадка.