Чи зменшують текстові браузери мережевий трафік?


27

Do текстові браузери , засновані , наприклад, рись , посилання і ELinks споживають меншу пропускну здатність , ніж на основі браузера графічного інтерфейсу користувача (тобто, Firefox, Chrome і т.д.)?

Я здогадуюсь не зменшення трафіку.
Обґрунтування: Я думаю, що текстовий браузер завантажує всю сторінку так, як це пропонується сервером. Будь-яке упорядкування або зменшення віджетів сторінки здійснюється локально.

Може бути , є деяке зниження трафіку, так як більшість текстових браузерів не виконуватимуть скрипти сторінки або SWF , які можуть викликати більше трафіку.


19
Або фактично завантажуйте зображення ..
Journeyman Geek

4
Подумайте з точки зору очікування зменшення на три або більше порядків .
користувач2338816

1
@ user2338816 Так, може бути різниця у три порядки. Спробуйте YouTube! [Додавання пізніше:] На жаль, це ще три!
Volker Siegel

3
@ user2338816 три порядки малоймовірно. Наприклад, для цієї конкретної сторінки оригінальний html-документ становить приблизно 10% від усіх завантажуваних джерел, не враховуючи кешування, тобто лише один порядок; і багато важких елементів (бібліотеки javascript, великі зображення тощо) успішно кешуються, часто використовуються на багатьох сторінках і тому завантажуються дуже рідко, тому їх розмір насправді не відображає їх впливу на загальний мережевий трафік.
Петерсіс

1
@ Петерис 3 може бути трохи високим, але 2, безумовно, це не так. Скажімо, 10%, які ви помітили тут, однакові на більшості звичайних сайтів. Потім врахуйте, що відеопотік становить 78% від усіх відеопотоків. Це означає для решти 22% трафіку, ми можемо очікувати, що 2,2% буде текстовим. Зараз це математика серветки, але 2 порядку начебто там, де вона є.
corsiKa

Відповіді:


53

Веб-сервер не надсилає "весь веб-сайт", а документи, які запитують браузери.

Наприклад, коли ви отримуєте доступ до https://www.google.com/ сервера запитів документа для документа https://www.google.com/. Сервер обробляє запит і повертає назад якийсь HTML-код.

Потім браузер перевіряє, що сервер надіслав. У цьому випадку це 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 пікс прозорий GIF (62 B / 43 B), який відображається на вкладці " Ресурси Chrome Dev Tools" , але я не зміг його знайти у джерелі - ймовірно, доданий пізніше за допомогою JavaScript
  • 1 × 1 px пошкоджений GIF-файл, який з’являється двічі (34 B / 23 B). Її призначення для мене загадка.

1
Мені сподобалося комбіноване посилання на зображення - це акуратний трюк.
prateek61

12
@ prateek61 Всі основні веб-сайти використовують його; це фактично техніка, запозичена у відеоігор. :) Насправді, багато веб-розробників навіть називають це " спрайтами CSS " або подібними (в Amazon це називається "spriting", але я не знаю, наскільки поширена ця варіація).
пухнастий

3
Ну, майже - можна вставляти зображення безпосередньо в HTML, використовуючи схему URI даних ( data:).
Натан Осман

Так, якщо ви готові пожертвувати більшістю вмісту в Інтернеті, ви можете зменшити пропускну здатність. Здається логічним ... Не будемо забувати, що 78% Інтернету - це відео трафік ...
corsiKa

25

Я б підозрював, що вони так роблять. Я не вірю, що текстові браузери (за замовчуванням) навіть завантажуватимуть такі ресурси, як зображення або зовнішні об'єкти, такі як шрифти (якщо потрібно), сценарії тощо.

Я зробив декілька базових тестувань за допомогою 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/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

Тому я wgetпросто демонстрував усі запити та відповіді HTTP, які будуть зроблені. -pПараметр визначається наступним чином : -p, --page-requisites get all images, etc. needed to display HTML page.. Я не хотів використовувати фактичний браузер GUI, оскільки вони прагнуть робити інші запити, які мені не хотілося відфільтровувати.
prateek61

3
Мені подобається і ця відповідь. Огляд wget був цікавий.
Павло

1

Я думаю, що текстові браузери значно зменшать кількість переданих даних, оскільки вони не вимагатимуть усіх роздутих веб-зображень із високою роздільною здатністю веб-2.0, відео та інтерактивних матеріалів (Flash та інших).

Я пропоную вам просто перевірити це, встановивши правило IPtables, яке підрахує кількість трафіку, що потрапляє на певне правило IPtables.

Наприклад, створіть правило для порту 80 + 443 з підрахунком трафіку та перегляньте Інтернет за допомогою звичайного браузера, скиньте лічильник IPtables та зробіть те ж саме з текстовим браузером.

Майте на увазі, що ви не можете порівнювати обидва тири на 100%, оскільки динамічний веб-вміст (оголошення та інше) може змінюватись у кожному доступі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.