Les navigateurs textuels réduisent-ils le trafic réseau?

27

Faire les navigateurs basés sur des textes tels que le lynx , des liens et elinks consomment moins de bande passante qu'un navigateur basé sur GUI (IE, Firefox, Chrome , etc.)?

Je suppose qu'il n'y a pas de réduction du trafic.
Justification: Je pense qu'un navigateur basé sur du texte télécharge la page entière telle qu'elle est proposée par le serveur. Toute rationalisation ou réduction des widgets de page se fait localement.

Il y a peut-être une certaine réduction du trafic, car la plupart des navigateurs basés sur du texte n'exécutent pas de scripts de page ou de SWF, ce qui pourrait générer plus de trafic.

Paulb
la source
19
Ou télécharger des images.
Journeyman Geek
4
Pensez à vous attendre à une réduction de trois ordres de grandeur ou plus .
user2338816
1
@ user2338816 Oui, il peut y avoir une différence de trois ordres de grandeur. Essayez YouTube! [Ajout plus tard:] Oups, c'est encore trois!
Volker Siegel
3
@ user2338816 trois ordres de grandeur seraient peu probables. Par exemple, pour cette page particulière, le document html d'origine représente environ 10% de toutes les sources téléchargeables sans tenir compte de la mise en cache, donc un seul ordre de grandeur; et de nombreux éléments lourds (bibliothèques javascript, grandes images, etc.) sont correctement mis en cache, souvent réutilisés sur de nombreuses pages et sont donc téléchargés très rarement, de sorte que leur taille ne représente pas vraiment leur impact sur le trafic réseau total.
Peteris
1
@Peteris 3 peut être un peu élevé, mais 2 ne l'est certainement pas. Disons que les 10% que vous remarquez ici sont les mêmes sur la plupart des sites réguliers. Tenez compte du fait que le trafic vidéo représente 78% de tout le trafic vidéo. Cela signifie que pour le reste des 22% du trafic, nous pouvons nous attendre à ce que 2,2% soient du texte. Maintenant, ce sont les mathématiques de la serviette, mais 2 ordres de grandeur semblent être là.
corsiKa

Réponses:

53

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.
gronostaj
la source
1
J'ai aimé le lien d'images combinées - c'est une astuce intéressante.
prateek61
12
@ prateek61 Tous les principaux sites Web l'utilisent; c'est en fait une technique empruntée aux jeux vidéo. :) En fait, de nombreux développeurs Web l'appellent même " sprites CSS " ou similaire (sur Amazon, il est appelé "sprite" mais je ne sais pas à quel point cette variation est courante).
moelleux
3
Eh bien, presque - il est possible d'incorporer des images directement dans HTML en utilisant le schéma d'URI de données ( data:).
Nathan Osman
Oui, si vous êtes prêt à sacrifier la plupart du contenu d'Internet, vous pouvez réduire la bande passante. Semble logique ... N'oublions pas que 78% d'Internet est du trafic vidéo ...
corsiKa
25

Je soupçonne qu'ils le font. Je ne pense pas que les navigateurs textuels téléchargent (par défaut) même des ressources telles que des images ou des entités externes, telles que des polices (si nécessaire), des scripts, etc.

J'ai fait quelques tests de base avec tcpdump en essayant d'obtenir cette page IANA ( http://www.iana.org/domains/reserved ) avec à la fois lynx et ensuite wget, et voici mes résultats (commandes HTTP uniquement, je peux fournir le reste si besoin).

lynx http://www.iana.org/domains/reserved

  4   0.072774 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /domains/reserved HTTP/1.0
 10   0.146971   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (text/html)

wget -p http://www.iana.org/domains/reserved

  4   0.072139 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /domains/reserved HTTP/1.0
 22   0.145905   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (text/html)
 28   0.219381 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /robots.txt HTTP/1.0
 30   0.291877   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (text/plain)
 32   0.292550 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/screen.css HTTP/1.0
 94   0.440388   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (text/css)
100   0.514652 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/print.css HTTP/1.0
132   0.660071   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (text/css)
138   0.733546 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/bookmark_icon.ico HTTP/1.0
154   0.878227   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
160   0.950713 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_js/2013.1/jquery.js HTTP/1.0
277   1.172095   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/x-javascript)
283   1.244571 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_js/2013.1/iana.js HTTP/1.0
285   1.317059   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK
287   1.317609 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/2013.1/iana-logo-header.svg HTTP/1.0
332   1.464356   192.0.32.8 -> xx.xx.xx.xx HTTP/XML HTTP/1.1 200 OK
337   1.536749 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/2013.1/icann-logo.svg HTTP/1.0
348   1.610449   192.0.32.8 -> xx.xx.xx.xx HTTP/XML HTTP/1.1 200 OK
353   1.682727 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/fonts/OpenSans-Light.ttf HTTP/1.0
658   2.552776   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
663   2.625015 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/fonts/OpenSans-Regular.ttf HTTP/1.0
926   3.063537   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
932   3.135931 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/fonts/OpenSans-Semibold.ttf HTTP/1.0
1216   3.573481   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
1222   3.645984 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/fonts/OpenSans-Bold.ttf HTTP/1.0
1500   4.012966   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
1506   4.085693 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2013.1/fonts/Inconsolata.otf HTTP/1.0
1584   4.304016   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
1589   4.376612 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/2011.1/icons/icon_alert.png HTTP/1.0
1592   4.449311   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (PNG)
1594   4.449930 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/2013.1/iana-logo-homepage.png HTTP/1.0
1627   4.596125   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (PNG)
1633   4.668596 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_img/2013.1/[email protected] HTTP/1.0
1704   4.895581   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (PNG)
1710   4.968097 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2011.1/fonts/OpenSans-Light.ttf HTTP/1.0
1982   5.364584   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
1988   5.438091 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2011.1/fonts/OpenSans-Regular.ttf HTTP/1.0
2243   5.830353   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
2249   5.902861 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2011.1/fonts/OpenSans-SemiBold.ttf HTTP/1.0
2259   5.976674   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 404 NOT FOUND  (text/html)
2263   6.047876 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2011.1/fonts/OpenSans-Bold.ttf HTTP/1.0
2533   6.415590   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)
2539   6.487909 xx.xx.xx.xx -> 192.0.32.8   HTTP GET /_css/2011.1/fonts/Inconsolata.otf HTTP/1.0
2616   6.720477   192.0.32.8 -> xx.xx.xx.xx HTTP HTTP/1.1 200 OK  (application/octet-stream)

Je me rends donc compte que ce n'est pas un excellent test car il wgetpeut télécharger des ressources qu'un navigateur peut ne pas télécharger, mais l'exemple que je pense tient - il y a beaucoup plus de demandes requises pour rendre le contenu sur un navigateur GUI. En tant que tel, les navigateurs GUI génèrent généralement plus de trafic réseau que les navigateurs texte.

prateek61
la source
Je ne pense pas que l' wgeton puisse considérer un navigateur. Mieux vaut essayer avec elinksou quelque chose de similaire.
Darkhogg
J'ai donc utilisé wgetsimplement pour démontrer toutes les demandes et réponses HTTP qui seront faites. Le -pparamètre est défini comme suit: -p, --page-requisites get all images, etc. needed to display HTML page.. Je ne voulais pas utiliser un véritable navigateur GUI car ils ont tendance à faire d'autres demandes que je ne voulais pas filtrer.
prateek61
3
J'aime aussi cette réponse. L'inspection wget était intéressante.
Paulb
1

Je pense que les navigateurs basés sur du texte réduiront considérablement la quantité de données transférées car ils ne demanderont pas toutes ces images, vidéos et éléments interactifs haute résolution web 2.0 gonflés (Flash et autres).

Je vous suggère de tester cela en configurant une règle IPtables qui comptera la quantité de trafic atteignant une règle IPtables spécifique.

Par exemple, créez une règle pour le port 80 + 443 avec comptage du trafic et naviguez sur le Web avec un navigateur normal, réinitialisez le compteur IPtables et faites de même avec un navigateur textuel.

Gardez à l'esprit que vous ne pouvez pas comparer les deux exécutions à 100% car le contenu Web dynamique (annonces et autres éléments) peut varier sur chaque accès.

Sebastian Brabetz
la source