基于文本的浏览器是否山猫,链接和链接比基于 GUI 的浏览器(即 Firefox、Chrome 等)消耗更少的带宽?
我是猜测 不减少流量。
理由:我认为基于文本的浏览器会下载服务器提供的整个页面。任何页面小部件的精简或减少都是在本地完成的。
也许有一些减少流量,因为大多数基于文本的浏览器不会执行可能会导致更多流量的页面脚本或 SWF。
答案1
Web 服务器不会发送“整个网站”,而是发送浏览器请求的文档。
例如当您访问https://www.google.com/浏览器向服务器查询文档https://www.google.com/
。服务器处理请求并返回一些 HTML 代码。
然后浏览器检查服务器发送的内容。在本例中是 HTML 网页,因此它会解析文档并查找引用的脚本、样式表、图像、字体等。
此时浏览器已完成下载该文档,但仍未下载引用的文档。它可以选择下载或跳过它们。常规浏览器将尝试下载所有引用的文档以获得最佳观看体验。如果您有广告拦截器(如 Adblock)或隐私插件(Ghostery、NoScript),它也可能会阻止某些资源。
然后,浏览器逐个下载引用的文档,每次都明确向服务器请求单个资源。在我们的 Google 示例中,浏览器将找到以下引用,仅举几例:
- https://www.google.com/images/srpr/logo11w.png(谷歌徽标)
- https://www.google.com/textinputassistant/tia.png(键盘图标)
- https://ssl.gstatic.com/gb/images/i1_3d265689.png(一些组合图像,用于减少浏览器请求数量的技巧)
(实际文件可能因不同的用户、浏览器和会话而不同,并且可能随时间而变化)
基于文本的浏览器不会下载图像、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)。它的用途对我来说是个谜。
答案2
我怀疑他们会这么做。我不相信基于文本的浏览器(默认情况下)会下载诸如图像或外部实体(如字体(如果需要)、脚本等)之类的资源。
我使用 tcpdump 进行了一些基本测试,试图获取此 IANA 页面(http://www.iana.org/domains/reserved) 同时使用 lynx 和 wget,以下是我的结果(仅限 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/[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)
所以我意识到这不是一个很好的测试,因为wget
可能会下载浏览器可能不会下载的资源,但我认为这个例子是成立的 - 在 GUI 浏览器上呈现内容需要更多的请求。因此,GUI 浏览器通常会比基于文本的浏览器产生更多的网络流量。
答案3
我认为基于文本的浏览器将显著减少传输的数据量,因为它们不会请求所有那些臃肿的 Web 2.0 高分辨率图像、视频和交互式内容(Flash 等)。
我建议您通过设置 IPtables 规则来测试这一点,该规则将计算达到特定 IPtables 规则的流量数量。
例如,为端口 80+443 创建一个具有流量计数的规则,然后使用普通浏览器浏览网页,重置 IPtables 计数器,并使用基于文本的浏览器执行相同操作。
请记住,您无法 100% 比较两次运行,因为动态网络内容(广告和内容)在每次访问时可能会有所不同。