基于文本的浏览器会减少网络流量吗?


27

诸如lynx链接elink之类的基于文本的浏览器是否比基于GUI的浏览器(即Firefox,Chrome等)消耗更少的带宽?

中的流量减少。
基本原理:我认为基于文本的浏览器会下载服务器提供的整个页面。任何页面精简或精简都在本地完成。

也许流量有所减少,因为大多数基于文本的浏览器不会执行页面脚本或SWF,这可能会导致更多流量。


19
或实际上下载图像..
Journeyman Geek

4
考虑到期望减少三个或更多数量级
user2338816 2014年

1
@ user2338816是的,可能相差三个数量级。试试YouTube![稍后添加:]糟糕,这是另外三个!
Volker Siegel 2014年

3
@ user2338816三个数量级是不可能的。例如,对于该特定页面,不考虑缓存,原始html文档占整个可下载源的10%左右,因此仅一个数量级。并且许多重量级项目(javascript库,大图像等)已成功缓存,经常在许多页面上重复使用,因此很少下载,因此它们的大小并不能真正代表其对总网络流量的影响。
Peteris 2014年

1
@Peteris 3可能有点高,但2当然不是。假设您在此处注意到的10%在大多数常规网站上都是相同的。然后考虑视频流量占所有视频流量的78%。这意味着对于22%的其余流量,我们可以预期2.2%为文本。现在,这是餐巾纸的数学运算,但似乎是2个数量级。
corsiKa 2014年

Answers:


53

Web服务器不会发送“整个网站”,而是发送浏览器请求的文档。

例如,当您访问https://www.google.com/时,浏览器将查询服务器中的文档https://www.google.com/。服务器处理该请求并发送回一些HTML代码。

然后,浏览器检查服务器已发送的内容。在这种情况下,它是HTML网页,因此它将解析文档并查找引用的脚本,样式表,图像,字体等。

在此阶段,浏览器已完成该文档的下载,但仍未下载参考文档。它可以选择这样做或跳过它们。常规浏览器将尝试下载所有参考文档以获得最佳观看体验。如果您有广告拦截器(如Adblock)或隐私插件(Ghostery,NoScript),它也可能会屏蔽某些资源。

然后,浏览器会逐个下载引用的文档,每次都明确要求服务器提供单个资源。在我们的Google示例中,浏览器将找到以下引用,仅列举其中一些:

(对于不同的用户,浏览器和会话,实际文件可能会有所不同,并且可能会随时间变化)

基于文本的浏览器不会下载图像,Flash文件,HTML5视频等,因此它们下载的数据更少。


@NathanOsman在评论中很好地指出:有时小图像直接嵌入HTML文档中,在这种情况下,无法避免下载它们。这是减少请求数量的另一个技巧。他们是非常小的,但是,否则Base64编码的二进制文件的开销太大。在Google.com上,此类图片很少:(base64编码大小 / 解码大小

  • 19×11键盘图标(106 B / 76 B)
  • 28×38麦克风图标(334 B / 248 B)
  • 1×1 px透明GIF(62 B / 43 B),显示在Chrome Dev Tools的“ 资源”标签中,但我在源代码中找不到-可能稍后会在JavaScript中添加
  • 1×1 px损坏的GIF文件出现两次(34 B / 23 B)。它的目的对我来说是个谜。

1
我喜欢组合图像链接-这是一个巧妙的技巧。
prateek61 2014年

12
@ prateek61所有主要网站都使用它;它实际上是从电子游戏中借来的一种技术。:)实际上,许多Web开发人员甚至将其称为“ CSS sprites ”或类似名称(在亚马逊被称为“ spriting”,但我不知道这种变化有多普遍)。
蓬松的2014年

3
好吧,几乎-可以使用数据URI方案(data:)将图像直接嵌入HTML中。
内森·奥斯曼

是的,如果您愿意牺牲互联网的大部分内容,则可以减少带宽。似乎合乎逻辑...不要忘记,互联网的78%是视频流量 ...
corsiKa 2014年

25

我怀疑他们会这么做。我不相信基于文本的浏览器(默认情况下)甚至不会下载资源,例如图像或外部实体,例如字体(如果需要),脚本等。

我使用tcpdump进行了一些基本测试,试图同时使用lynx和wget 来获取IANA页面(http://www.iana.org/domains/reserved),这是我的结果(仅HTTP命令,我可以提供其余的内容)如果需要的话)。

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)

因此,我意识到这不是一个很好的测试,因为它wget可能下载浏览器可能不会下载的资源,但是我认为例子仍然存在-在GUI浏览器上呈现内容还需要更多请求。因此,与基于文本的浏览器相比,它的GUI浏览器通常会引起更多的网络流量。


我认为wget不能将其视为浏览器。最好尝试使用elinks类似方法。
Darkhogg 2014年

因此,我wget只是简单地演示了将要进行的所有HTTP请求和响应。该-p参数被定义为以下:-p, --page-requisites get all images, etc. needed to display HTML page.。我不想使用实际的GUI浏览器,因为它们会发出我不想过滤掉的其他请求。
prateek61 2014年

3
我也喜欢这个答案。WGET检查很有趣。
Paulb 2014年

1

我认为基于文本的浏览器将大大减少传输的数据量,因为它们不会要求所有那些those肿的web 2.0高分辨率图像,视频和交互式内容(Flash等)。

我建议您通过设置IPtables规则进行测试,该规则将计算命中特定IPtables规则的流量。

例如,使用流量计数为端口80 + 443创建规则,并使用常规浏览器浏览网络,重置IPtables Counter,然后使用基于文本的浏览器进行操作。

请记住,由于每次访问的动态Web内容(广告和内容)可能会有所不同,因此您无法同时比较两者的运行情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.