¿Los navegadores basados ​​en texto reducen el tráfico de red?

27

Hacer navegadores basados en texto, tales como el lince , enlaces y Resultados de enlaces consumen ancho de banda menor que un navegador basado en interfaz gráfica de usuario (es decir, Firefox, Chrome, etc.)?

Estoy adivinando ninguna reducción en el tráfico.
Justificación: Creo que un navegador basado en texto descarga toda la página tal como la ofrece el servidor. Cualquier racionalización o reducción de widgetry de página se realiza localmente.

Tal vez haya una reducción en el tráfico, ya que la mayoría de los navegadores basados ​​en texto no ejecutarán scripts de página o SWF, lo que podría causar más tráfico.

Paulb
fuente
19
O descargue imágenes ..
Journeyman Geek
44
Piense en términos de esperar una reducción de tres o más órdenes de magnitud .
user2338816
1
@ user2338816 Sí, puede haber una diferencia de tres órdenes de magnitud. ¡Prueba YouTube! [Añadiendo más tarde:] ¡Vaya, son otros tres!
Volker Siegel
3
@ user2338816 tres órdenes de magnitud serían poco probables. Por ejemplo, para esta página en particular, el documento html original es aproximadamente el 10% de todas las fuentes descargables sin tener en cuenta el almacenamiento en caché, por lo que solo un orden de magnitud; y muchos elementos pesados ​​(bibliotecas javascript, imágenes grandes, etc.) se almacenan en caché con éxito, a menudo se reutilizan en muchas páginas y, por lo tanto, se descargan muy raramente, por lo que su tamaño no representa realmente su impacto en el tráfico total de la red.
Peteris
1
@Peteris 3 puede ser un poco alto, pero 2 ciertamente no lo es. Digamos que el 10% que observa aquí es el mismo en la mayoría de los sitios regulares. Luego, tenga en cuenta que el tráfico de video representa el 78% de todo el tráfico de video. Esto significa que para el resto del 22% del tráfico, podemos esperar que el 2.2% sea texto. Ahora, esto es matemática de servilletas, pero 2 órdenes de magnitud parecen estar donde están.
corsiKa

Respuestas:

53

El servidor web no envía "todo el sitio web", sino los documentos que solicitan los navegadores.

Por ejemplo, cuando accede a https://www.google.com/, el navegador consulta el servidor para el documento https://www.google.com/. El servidor procesa la solicitud y devuelve un código HTML.

Luego, el navegador verifica lo que el servidor ha enviado. En este caso, es una página web HTML, por lo que analiza el documento y busca guiones, hojas de estilo, imágenes, fuentes, etc.

En esta etapa, el navegador ha terminado de descargar ese documento, pero aún no ha descargado los documentos de referencia. Puede elegir hacerlo o saltearlos. Los navegadores regulares intentarán descargar todos los documentos referenciados para una mejor experiencia de visualización. Si tiene un bloqueador de anuncios (como Adblock) o un complemento de privacidad (Ghostery, NoScript), también puede bloquear algunos recursos.

Luego, el navegador descarga los documentos de referencia uno por uno, cada vez que solicita explícitamente al servidor un solo recurso. En nuestro ejemplo de Google, el navegador encontrará las siguientes referencias, solo por nombrar algunas:

(los archivos reales pueden ser diferentes para diferentes usuarios, navegadores y sesiones y pueden cambiar con el tiempo)

Los navegadores basados ​​en texto no descargan imágenes, archivos Flash, videos HTML5, etc., por lo que descargan menos datos.


@NathanOsman hace un buen punto en los comentarios: a veces, las imágenes pequeñas se incrustan directamente en documentos HTML y, en esos casos, no se puede evitar descargarlas. Este es otro truco utilizado para reducir el número de solicitudes. Sin embargo, son muy pequeños, de lo contrario, la sobrecarga de codificación de archivos binarios en base64 es demasiado grande. Hay pocas imágenes de este tipo en Google.com: ( tamaño codificado base64 / tamaño decodificado )

  • Icono de teclado 19 × 11 (106 B / 76 B)
  • Icono de micrófono 28 × 38 (334 B / 248 B)
  • GIF transparente de 1 × 1 px (62 B / 43 B) que aparece en la pestaña Recursos de herramientas de desarrollo de Chrome , pero no pude encontrarlo en la fuente, probablemente agregado más tarde con JavaScript
  • Archivo GIF dañado de 1 × 1 px que aparece dos veces (34 B / 23 B). Su propósito es un misterio para mí.
gronostaj
fuente
1
Me gustó el enlace de imágenes combinadas, que es un buen truco.
prateek61
12
@ prateek61 Todos los sitios web principales lo usan; en realidad es una técnica prestada de los videojuegos. :) De hecho, muchos desarrolladores web incluso lo llaman " sprites CSS " o similar (en Amazon se conoce como "sprites" pero no sé qué tan común es esa variación).
esponjoso
3
Bueno, casi: es posible incrustar imágenes directamente en HTML usando el esquema URI de datos (data: ).
Nathan Osman
Sí, si está dispuesto a sacrificar la mayor parte del contenido de Internet, puede reducir el ancho de banda. Parece lógico ... No hay que olvidar que el 78% del tráfico de Internet es de vídeo ...
corsiKa
25

Sospecho que lo hacen. No creo que los navegadores basados ​​en texto descarguen (por defecto) recursos como imágenes o entidades externas, como fuentes (si es necesario), scripts, etc.

Hice algunas pruebas básicas con tcpdump tratando de obtener esta página de IANA ( http://www.iana.org/domains/reserved ) con lynx y luego wget, y aquí estaban mis resultados (solo comandos HTTP, puedo proporcionar el resto si es necesario).

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)

Así que me doy cuenta de que esta no es una gran prueba, ya que wgetpuede descargar recursos que un navegador podría no descargar, pero creo que el ejemplo es válido: se requieren muchas más solicitudes para representar el contenido en un navegador GUI. Como tal, los navegadores GUI generalmente causarán más tráfico de red que los navegadores basados ​​en texto.

prateek61
fuente
No creo que wgetpueda considerarse un navegador. Mejor prueba con elinkso algo similar.
Darkhogg
Así que solía wgetdemostrar todas las solicitudes y respuestas HTTP que se realizarán. El -pparámetro se define como la siguiente: -p, --page-requisites get all images, etc. needed to display HTML page.. No quería usar un navegador GUI real, ya que tienden a hacer otras solicitudes que no quería tener que filtrar.
prateek61
3
Me gusta esta respuesta también. La inspección de wget fue interesante.
Paulb
1

Creo que los navegadores basados ​​en texto reducirán significativamente la cantidad de datos transferidos, ya que no solicitarán todas esas imágenes, videos y cosas interactivas de alta resolución web 2.0 hinchadas (Flash y otros).

Le sugiero que pruebe esto configurando una regla de IPtables que contará la cantidad de tráfico que llega a una regla específica de IPtables.

Por ejemplo, cree una regla para el puerto 80 + 443 con conteo de tráfico y navegue por la web con un navegador normal, restablezca el contador de IPtables y haga lo mismo con un navegador basado en texto.

Tenga en cuenta que no puede comparar ambas ejecuciones al 100% porque el contenido web dinámico (anuncios y demás) puede variar en cada acceso.

Sebastian Brabetz
fuente