Le serveur Web n'envoie pas le "site Web entier", mais les documents demandés par les navigateurs.
Par exemple, lorsque vous accédez à https://www.google.com/ le serveur de requêtes du navigateur pour le document https://www.google.com/
. Le serveur traite la demande et renvoie du code HTML.
Ensuite, le navigateur vérifie ce que le serveur a envoyé. Dans ce cas, il s'agit d'une page Web HTML, il analyse donc le document et recherche les scripts, les feuilles de style, les images, les polices, etc. référencés.
À ce stade, le navigateur a terminé de télécharger ce document, mais n'a toujours pas téléchargé les documents référencés. Il peut choisir de le faire ou de les ignorer. Les navigateurs habituels essaieront de télécharger tous les documents référencés pour une meilleure expérience de visualisation. Si vous avez un bloqueur de publicités (comme Adblock) ou un plugin de confidentialité (Ghostery, NoScript), il peut également bloquer certaines ressources.
Ensuite, le navigateur télécharge les documents référencés un par un, en demandant à chaque fois explicitement au serveur une seule ressource. Dans notre exemple Google, le navigateur trouvera les références suivantes, pour n'en nommer que quelques-unes:
(les fichiers réels peuvent être différents pour différents utilisateurs, navigateurs et sessions et peuvent changer au fil du temps)
Les navigateurs textuels ne téléchargent pas d'images, de fichiers Flash, de vidéos HTML5, etc., ils téléchargent donc moins de données.
@NathanOsman fait un bon point dans les commentaires: Parfois, de petites images sont intégrées directement dans des documents HTML et dans ces cas, leur téléchargement ne peut être évité. C'est une autre astuce utilisée pour réduire le nombre de demandes. Ils sont très petits, cependant, sinon la surcharge de codage du fichier binaire en base64 est trop grande. Il y a peu d'images de ce type sur Google.com: ( taille encodée en base64 / taille décodée )
- Icône de clavier 19 × 11 (106 B / 76 B)
- Icône de microphone 28 × 38 (334 B / 248 B)
- GIF transparent 1 × 1 px (62 B / 43 B) qui apparaît dans l' onglet Ressources de Chrome Dev Tools , mais je ne l'ai pas trouvé dans la source - probablement ajouté plus tard avec JavaScript
- Fichier GIF corrompu 1 × 1 px qui apparaît deux fois (34 B / 23 B). Son but est un mystère pour moi.