Как с помощью JavaScript можно определить скорость интернета пользователя?
Добрый день.
Пришла идея, написать SPA таким образом, что если у пользователя скорость подключения очень хорошая( и не только, подобных условий будет много ), то выдавать вариант сайта в формате 3d(three.js or babylonjs), а иначе обычный статичный сайт.
На данный момент в nodejs знаний высоких нет.
Но очень хочу на нём писать backend.
Может лучше протестировать скорость обработки WebGL ?
Объём данных то - не особо различается в обычном и в 3D-формате.
Поэтому, скорость канала - здесь не самая критическая и определяющая величина.
Более важно: сможет ли он эту красоту увидеть так, как Вы задумывали?!
А в плане упаковки - можно ещё доставить на клиент в виде zip-архива, а там - распаковать: всё это на JS делается.
sim3x: это пакетная доставка контента. зип отдаёт сервер в один поток и всё.
зачем так делать? - чтобы рендерить всё локально.
Помните, что swf скачиваются целиком, а после - запускаются.
Ну, вот, здесь, механика - та же, только контейнер - zip.
xmoonlight: Это странно, т.к. нативная реализация gzip в браузере скорее всего будет быстрее чем что распаковка при помощи js. А если еще учесть, что некоторые браузеры могут качать несколько файлов параллельно, а часть ресурсов можно отдать в lazy load, то совсем не ясно зачем все паковать в zip.
xmoonlight: SPA делают для удобства пользователей и/или снижения нагрузки. Чтобы без полной перегрузки страницы можно было перерисовать часть интерфейса, например.
SPA дает преимущества которые можно пощупать - снижение затрат на рендер, уменьшение времени отклика, уменьшение загрузки канала.
А какие преимущества дает зип распаковываемый при помощи js я пока не могу сообразить. Больше недостатков.
Stalker_RED: "я пока не могу сообразить. Больше недостатков." - вот ответ. Сообразить - не можете, а выводы - делаете.
Все ассеты грузятся сразу на клиент в один поток. Они находятся внутри архива в ресурсах браузера. Извлекаются оттуда - по мере необходимости без запросов к сети.
xmoonlight: Но ведь это увеличит время от прихода первых байтов до начала отрисовки? Это как-то обходится или приносится в жертву во имя... я даже не знаю, во имя чего. Единого контейнера?
Stalker_RED: загрузка - обычно сопровождается прогресс-баром посередине экрана. да, она разумеется увеличится немного. но это будет однократно при первом входе. При последующих входах на сайт (при открытии вкладки) - приложение будет уже браться из кэша или LocalStorage'а браузера и загружаться мгновенно. А при непосредственной работе внутри SPA - вообще максимально быстро: обмен только json/websocket-данными.
Интернет в вашем случае почти наверняка 2 параметра - скорость загрузки (сервер->клиент) и пинги, это можно сделать просто сделав пару запросов (большой файл и файл 0 размера) на свой сервер (обычным ajax), замерив время.
p.s. чем больше размер файла (или чем больше запросов) тем точнее информация но тем выше нагрузка на сервер, да и клиенты не будут довольны что при заходе на сайт у них будет тормозит.
Есть только один способ узнать реальный предел скорости ширины канала - это нагрузить канал до предела. На этом принципе и основаны все спидтесты. Причем для получения достоверных результатов эта нагрузка должна держаться дольше, чем время загрузки одной страницы. И кому тогда нужна такая "оптимизация" загрузки?