诸如lynx,链接和elink之类的基于文本的浏览器是否比基于GUI的浏览器(即Firefox,Chrome等)消耗更少的带宽?
我猜 不中的流量减少。
基本原理:我认为基于文本的浏览器会下载服务器提供的整个页面。任何页面精简或精简都在本地完成。
也许流量有所减少,因为大多数基于文本的浏览器不会执行页面脚本或SWF,这可能会导致更多流量。
诸如lynx,链接和elink之类的基于文本的浏览器是否比基于GUI的浏览器(即Firefox,Chrome等)消耗更少的带宽?
我猜 不中的流量减少。
基本原理:我认为基于文本的浏览器会下载服务器提供的整个页面。任何页面精简或精简都在本地完成。
也许流量有所减少,因为大多数基于文本的浏览器不会执行页面脚本或SWF,这可能会导致更多流量。
Answers:
Web服务器不会发送“整个网站”,而是发送浏览器请求的文档。
例如,当您访问https://www.google.com/时,浏览器将查询服务器中的文档https://www.google.com/
。服务器处理该请求并发送回一些HTML代码。
然后,浏览器检查服务器已发送的内容。在这种情况下,它是HTML网页,因此它将解析文档并查找引用的脚本,样式表,图像,字体等。
在此阶段,浏览器已完成该文档的下载,但仍未下载参考文档。它可以选择这样做或跳过它们。常规浏览器将尝试下载所有参考文档以获得最佳观看体验。如果您有广告拦截器(如Adblock)或隐私插件(Ghostery,NoScript),它也可能会屏蔽某些资源。
然后,浏览器会逐个下载引用的文档,每次都明确要求服务器提供单个资源。在我们的Google示例中,浏览器将找到以下引用,仅列举其中一些:
(对于不同的用户,浏览器和会话,实际文件可能会有所不同,并且可能会随时间变化)
基于文本的浏览器不会下载图像,Flash文件,HTML5视频等,因此它们下载的数据更少。
@NathanOsman在评论中很好地指出:有时小图像直接嵌入HTML文档中,在这种情况下,无法避免下载它们。这是减少请求数量的另一个技巧。他们是非常小的,但是,否则Base64编码的二进制文件的开销太大。在Google.com上,此类图片很少:(base64编码大小 / 解码大小)
data:
)将图像直接嵌入HTML中。
我怀疑他们会这么做。我不相信基于文本的浏览器(默认情况下)甚至不会下载资源,例如图像或外部实体,例如字体(如果需要),脚本等。
我使用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
类似方法。
wget
只是简单地演示了将要进行的所有HTTP请求和响应。该-p
参数被定义为以下:-p, --page-requisites get all images, etc. needed to display HTML page.
。我不想使用实际的GUI浏览器,因为它们会发出我不想过滤掉的其他请求。
我认为基于文本的浏览器将大大减少传输的数据量,因为它们不会要求所有那些those肿的web 2.0高分辨率图像,视频和交互式内容(Flash等)。
我建议您通过设置IPtables规则进行测试,该规则将计算命中特定IPtables规则的流量。
例如,使用流量计数为端口80 + 443创建规则,并使用常规浏览器浏览网络,重置IPtables Counter,然后使用基于文本的浏览器进行操作。
请记住,由于每次访问的动态Web内容(广告和内容)可能会有所不同,因此您无法同时比较两者的运行情况。