Czy przeglądarki tekstowe zmniejszają ruch w sieci?


27

Zrobić tekstowych przeglądarek opartych takie jak rysie , linki i elinks zużywa mniej pasma niż przeglądarce opartej GUI (IE, Firefox, Chrome itd.)?

Domyślam się, że nie ma ograniczenia ruchu.
Uzasadnienie: Myślę, że przeglądarka tekstowa pobiera całą stronę, tak jak jest oferowana przez serwer. Wszelkie usprawnienia lub ograniczenia widżetów stron są wykonywane lokalnie.

Być może nastąpił pewien spadek ruchu, ponieważ większość przeglądarek tekstowych nie uruchamia skryptów stron ani plików SWF, które mogą powodować większy ruch.


19
Lub faktycznie pobieraj zdjęcia ..
Journeyman Geek

4
Myśl w kategoriach spodziewania się zmniejszenia o trzy lub więcej rzędów wielkości .
user2338816,

1
@ user2338816 Tak, mogą występować różnice o trzy rzędy wielkości. Wypróbuj YouTube! [Dodawanie później:] Ups, to kolejne trzy!
Volker Siegel

3
@ user2338816 trzy rzędy wielkości byłyby mało prawdopodobne. Na przykład w przypadku tej konkretnej strony oryginalny dokument HTML stanowi około 10% wszystkich źródeł do pobrania, pomijając buforowanie, a więc tylko jeden rząd wielkości; a wiele ciężkich przedmiotów (biblioteki javascript, duże obrazy itp.) są z powodzeniem buforowane, często ponownie wykorzystywane na wielu stronach, a zatem pobierane bardzo rzadko, więc ich rozmiar nie odzwierciedla ich wpływu na całkowity ruch sieciowy.
Peteris,

1
@Peteris 3 może być trochę wysoki, ale 2 na pewno nie. Powiedzmy, że 10%, które zauważysz tutaj, jest takie samo w większości zwykłych witryn. Następnie weź pod uwagę, że ruch wideo stanowi 78% całego ruchu wideo. Oznacza to, że dla reszty 22% ruchu możemy spodziewać się, że 2,2% będzie tekstem. To matematyka na serwetki, ale wydaje się, że tam są 2 rzędy wielkości.
corsiKa

Odpowiedzi:


53

Serwer WWW nie wysyła „całej witryny”, ale dokumenty żądane przez przeglądarki.

Na przykład, gdy uzyskasz dostęp do https://www.google.com/, przeglądarka zapyta o dokument https://www.google.com/. Serwer przetwarza żądanie i odsyła trochę kodu HTML.

Następnie przeglądarka sprawdza, co serwer wysłał. W tym przypadku jest to strona HTML, więc analizuje dokument i wyszukuje skrypty, arkusze stylów, obrazy, czcionki itp.

Na tym etapie przeglądarka zakończyła pobieranie tego dokumentu, ale nadal nie pobrała dokumentów, do których istnieją odniesienia. Może to zrobić lub pominąć je. Zwykłe przeglądarki będą próbowały pobrać wszystkie dokumenty, do których istnieją odniesienia, w celu uzyskania najlepszej jakości oglądania. Jeśli masz bloker reklam (jak Adblock) lub wtyczkę prywatności (Ghostery, NoScript), może również blokować niektóre zasoby.

Następnie przeglądarka pobiera dokumenty referencyjne jeden po drugim, za każdym razem prosząc serwer wprost o pojedynczy zasób. W naszym przykładzie Google przeglądarka znajdzie następujące odniesienia, żeby wymienić tylko kilka z nich:

(rzeczywiste pliki mogą być różne dla różnych użytkowników, przeglądarek i sesji i mogą się zmieniać z czasem)

Przeglądarki tekstowe nie pobierają obrazów, plików Flash, filmów HTML5 itp., Więc pobierają mniej danych.


@NathanOsman ma rację w komentarzach: czasami małe obrazy są osadzane bezpośrednio w dokumentach HTML i w takich przypadkach nie można ich pobrać. To kolejna sztuczka używana do zmniejszenia liczby żądań. Są jednak bardzo małe, w przeciwnym razie narzut związany z kodowaniem pliku binarnego w base64 będzie zbyt duży. Na Google.com jest kilka takich obrazów: ( rozmiar zakodowany base64 / rozmiar zdekodowany )

  • Ikona klawiatury 19 × 11 (106 B / 76 B)
  • Ikona mikrofonu 28 × 38 (334 B / 248 B)
  • 1 × 1 px przezroczysty GIF (62 B / 43 B), który pojawia się w zakładce Zasoby narzędzi deweloperskich Chrome , ale nie mogłem go znaleźć w źródle - prawdopodobnie dodany później z JavaScript
  • Uszkodzony plik GIF 1 × 1 px, który pojawia się dwukrotnie (34 B / 23 B). Jego cel jest dla mnie tajemnicą.

1
Podobał mi się link do połączonych obrazów - to fajna sztuczka.
prateek61,

12
@ prateek61 Wszystkie główne strony internetowe go używają; to właściwie technika zapożyczona z gier wideo. :) W rzeczywistości wielu programistów nawet nazywa to „ duszkami CSS ” lub podobnymi (w Amazon nazywane jest „duszkami”, ale nie wiem, jak powszechna jest ta odmiana).
puszysty

3
Cóż, prawie - możliwe jest osadzanie obrazów bezpośrednio w HTML za pomocą schematu URI danych ( data:).
Nathan Osman

Tak, jeśli chcesz poświęcić większość zawartości Internetu, możesz zmniejszyć przepustowość. Wydaje się logiczne ... Nie zapominajmy, że 78% internetu to ruch wideo ...
corsiKa

25

Podejrzewałbym, że tak. Nie wierzę, że przeglądarki tekstowe (domyślnie) nawet pobierają zasoby, takie jak obrazy lub elementy zewnętrzne, takie jak czcionki (w razie potrzeby), skrypty itp.

Zrobiłem podstawowe testy z tcpdump, próbując uzyskać tę stronę IANA ( http://www.iana.org/domains/reserved ) za pomocą zarówno rysia, jak i następnie wget, i oto moje wyniki (tylko polecenia HTTP, mogę dostarczyć resztę Jeśli potrzebne).

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/iana-logo-homepage@2x.png 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)

Zdaję sobie więc sprawę, że nie jest to świetny test, ponieważ wgetmoże pobierać zasoby, których przeglądarka może nie pobrać, ale przykład, który - jak sądzę - zawiera wiele innych żądań do renderowania treści w przeglądarce GUI. W związku z tym przeglądarki GUI będą generować większy ruch w sieci niż przeglądarki tekstowe.


Nie sądzę, że wgetmożna to uznać za przeglądarkę. Lepiej spróbuj z elinksczymś podobnym.
Darkhogg,

Użyłem więc wgetpo prostu do zademonstrowania wszystkich żądań i odpowiedzi HTTP, które zostaną wykonane. -pParametr jest zdefiniowana jako: -p, --page-requisites get all images, etc. needed to display HTML page.. Nie chciałem używać rzeczywistej przeglądarki GUI, ponieważ mają tendencję do wysyłania innych żądań, których nie chciałem odfiltrowywać.
prateek61

3
Podoba mi się również ta odpowiedź. Kontrola wget była interesująca.
Paulb

1

Myślę, że przeglądarki tekstowe znacznie zmniejszą ilość przesyłanych danych, ponieważ nie będą żądać wszystkich tych rozdętych zdjęć, filmów i materiałów interaktywnych wysokiej rozdzielczości web 2.0 (Flash i inne).

Sugeruję przetestowanie tego poprzez skonfigurowanie reguły IPtables, która będzie liczyć ilość ruchu uderzającego w określoną regułę IPtables.

Na przykład utwórz regułę dla portu 80 + 443 z liczeniem ruchu i przeglądaj sieć w zwykłej przeglądarce, zresetuj licznik IPtables i zrób to samo z przeglądarką tekstową.

Pamiętaj, że nie można porównywać obu przebiegów w 100%, ponieważ dynamiczna zawartość internetowa (reklamy i inne) może się różnić w zależności od dostępu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.