Веб-сервер не надсилає "весь веб-сайт", а документи, які запитують браузери.
Наприклад, коли ви отримуєте доступ до https://www.google.com/ сервера запитів документа для документа https://www.google.com/
. Сервер обробляє запит і повертає назад якийсь HTML-код.
Потім браузер перевіряє, що сервер надіслав. У цьому випадку це 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)
- 1 × 1 пікс прозорий GIF (62 B / 43 B), який відображається на вкладці " Ресурси Chrome Dev Tools" , але я не зміг його знайти у джерелі - ймовірно, доданий пізніше за допомогою JavaScript
- 1 × 1 px пошкоджений GIF-файл, який з’являється двічі (34 B / 23 B). Її призначення для мене загадка.