Reduzieren textbasierte Browser den Netzwerkverkehr?

27

Verbrauchen textbasierte Browser wie Lynx , Links und Elinks weniger Bandbreite als ein GUI-basierter Browser (z. B. Firefox, Chrome usw.)?

Ich vermute keine Reduzierung des Verkehrs.
Begründung: Ich denke, ein textbasierter Browser lädt die gesamte Seite herunter, wie sie vom Server angeboten wird. Die Optimierung oder Reduzierung der Seitenbreite erfolgt lokal.

Möglicherweise gibt es eine gewisse Reduzierung des Datenverkehrs, da die meisten textbasierten Browser keine Seitenskripte oder SWF-Dateien ausführen, die möglicherweise mehr Datenverkehr verursachen.

Paulb
quelle
19
Oder tatsächlich Bilder herunterladen ..
Geselle Geek
4
Stellen Sie sich vor, Sie erwarten eine Reduzierung um drei oder mehr Größenordnungen .
user2338816
1
@ user2338816 Ja, möglicherweise liegt ein Unterschied von drei Größenordnungen vor. Probieren Sie YouTube! Hoppla, das sind noch drei!
Volker Siegel
3
@ user2338816 drei Größenordnungen wären unwahrscheinlich. Zum Beispiel macht das Original-HTML-Dokument für diese bestimmte Seite ungefähr 10% der gesamten herunterladbaren Quellen aus, wobei das Zwischenspeichern nicht berücksichtigt wird, also nur eine Größenordnung. und viele schwergewichtige Elemente (Javascript-Bibliotheken, große Bilder usw.) werden erfolgreich zwischengespeichert, häufig über viele Seiten hinweg wiederverwendet und daher nur sehr selten heruntergeladen, sodass ihre Größe nicht wirklich ihren Einfluss auf den gesamten Netzwerkverkehr darstellt.
Peteris
1
@Peteris 3 ist vielleicht ein bisschen hoch, aber 2 ist es bestimmt nicht. Angenommen, die 10%, die Sie hier bemerken, sind auf den meisten regulären Websites gleich. Berücksichtigen Sie dann, dass der Videoverkehr 78% des gesamten Videoverkehrs ausmacht. Dies bedeutet, dass für den Rest der 22% des Verkehrs 2,2% Text sein werden. Nun, das ist Serviettenmathematik, aber 2 Größenordnungen scheinen da zu sein, wo sie ist.
CorsiKa

Antworten:

53

Der Webserver sendet nicht die gesamte Website, sondern die vom Browser angeforderten Dokumente.

Wenn Sie beispielsweise auf https://www.google.com/ zugreifen, fragt der Browser den Server nach dem Dokument ab https://www.google.com/. Der Server verarbeitet die Anfrage und sendet HTML-Code zurück.

Dann prüft der Browser, was der Server gesendet hat. In diesem Fall handelt es sich um eine HTML-Webseite, die das Dokument analysiert und nach referenzierten Skripten, Stylesheets, Bildern, Schriftarten usw. sucht.

Zu diesem Zeitpunkt hat der Browser das Herunterladen des Dokuments abgeschlossen, hat jedoch noch keine referenzierten Dokumente heruntergeladen. Es kann sich dafür entscheiden oder diese überspringen. Normale Browser versuchen, alle Dokumente, auf die verwiesen wird, herunterzuladen, um eine optimale Anzeige zu erzielen. Wenn Sie über einen Werbeblocker (wie Adblock) oder ein Datenschutz-Plugin (Ghostery, NoScript) verfügen, werden möglicherweise auch einige Ressourcen blockiert.

Anschließend lädt der Browser die referenzierten Dokumente nacheinander herunter, wobei er den Server jedes Mal explizit nach einer einzelnen Ressource fragt. In unserem Google-Beispiel findet der Browser folgende Referenzen, um nur einige zu nennen:

(Die tatsächlichen Dateien können für verschiedene Benutzer, Browser und Sitzungen unterschiedlich sein und sich im Laufe der Zeit ändern.)

Textbasierte Browser laden keine Bilder, Flash-Dateien, HTML5-Videos usw. herunter, sodass weniger Daten heruntergeladen werden.


@ NathanOsman macht einen guten Punkt in Kommentaren: Manchmal sind kleine Bilder direkt in HTML-Dokumente eingebettet und in diesen Fällen kann das Herunterladen nicht vermieden werden. Dies ist ein weiterer Trick, mit dem die Anzahl der Anforderungen verringert wird. Sie sind jedoch sehr klein, da sonst der Aufwand für die Codierung von Binärdateien in base64 zu groß ist. Es gibt nur wenige solcher Bilder auf Google.com: ( Base64-codierte Größe / decodierte Größe )

  • 19 × 11-Tastatursymbol (106 B / 76 B)
  • 28 × 38 Mikrofonsymbol (334 B / 248 B)
  • 1 × 1 px transparentes GIF (62 B / 43 B), das auf der Registerkarte " Ressourcen" von Chrome Dev Tools angezeigt wird, aber ich konnte es nicht in der Quelle finden - wahrscheinlich später mit JavaScript hinzugefügt
  • 1 × 1 px beschädigte GIF-Datei, die zweimal angezeigt wird (34 B / 23 B). Ihr Zweck ist mir ein Rätsel.
gronostaj
quelle
1
Mir hat der Link zu den kombinierten Bildern gefallen - das ist ein ordentlicher Trick.
Prateek61
12
@ prateek61 Alle wichtigen Websites verwenden es. Es ist eigentlich eine Technik, die aus Videospielen entlehnt wurde. :) Tatsächlich nennen es viele Webentwickler sogar " CSS-Sprites " oder ähnliches (bei Amazon wird es als "Spriting" bezeichnet, aber ich weiß nicht, wie häufig diese Variation ist).
flauschiger
3
Fast ist es möglich, Bilder mit dem Daten-URI-Schema ( data:) direkt in HTML einzubetten .
Nathan Osman
Ja, wenn Sie bereit sind, den größten Teil des Internetinhalts zu opfern, können Sie die Bandbreite reduzieren. Scheint logisch ... Vergessen wir nicht, dass 78% des Internets Videoverkehr ist ...
corsiKa
25

Ich würde vermuten, dass sie es tun. Ich glaube nicht, dass textbasierte Browser (standardmäßig) Ressourcen wie Bilder oder externe Entitäten wie Schriftarten (falls erforderlich), Skripte usw. herunterladen.

Ich habe einige grundlegende Tests mit tcpdump durchgeführt, um diese IANA-Seite ( http://www.iana.org/domains/reserved ) mit beiden lynx- und wget-Befehlen zu erhalten, und hier sind meine Ergebnisse (nur HTTP-Befehle, den Rest kann ich bereitstellen) wenn benötigt).

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)

Ich stelle fest, dass dies kein großartiger Test ist, da wgetmöglicherweise Ressourcen heruntergeladen werden, die ein Browser möglicherweise nicht herunterlädt, aber das Beispiel, von dem ich denke, dass es viel mehr Anforderungen gibt, um Inhalte in einem GUI-Browser zu rendern. Daher verursachen GUI-Browser im Allgemeinen mehr Netzwerkverkehr als textbasierte Browser.

prateek61
quelle
Ich glaube nicht, dass wgetdies als Browser angesehen werden kann. Besser mit probieren elinksoder ähnliches.
Darkhogg
Also habe ich wgeteinfach alle HTTP-Anfragen und -Antworten demonstriert, die gemacht werden. Der -pParameter wird wie folgt definiert: -p, --page-requisites get all images, etc. needed to display HTML page.. Ich wollte keinen tatsächlichen GUI-Browser verwenden, da diese dazu neigen, andere Anfragen zu stellen, die ich nicht herausfiltern wollte.
Prateek61
3
Diese Antwort gefällt mir auch. Die Wget-Inspektion war interessant.
Paulb
1

Ich denke, dass textbasierte Browser die Menge der übertragenen Daten erheblich reduzieren werden, da sie nicht alle diese aufgeblähten hochauflösenden Web 2.0-Bilder, Videos und interaktiven Inhalte (Flash und andere) anfordern werden.

Ich schlage vor, Sie testen dies, indem Sie eine IPtables-Regel einrichten, die den Datenverkehr zählt, der auf eine bestimmte IPtables-Regel trifft.

Erstellen Sie beispielsweise eine Regel für Port 80 + 443 mit Verkehrszählung und durchsuchen Sie das Internet mit einem normalen Browser, setzen Sie den IPtables-Zähler zurück und tun Sie dasselbe mit einem textbasierten Browser.

Beachten Sie, dass Sie nicht beide Läufe zu 100% vergleichen können, da der dynamische Webinhalt (Anzeigen und Inhalte) bei jedem Zugriff unterschiedlich sein kann.

Sebastian Brabetz
quelle