У клиента дохлый канал?
В 1997 году, когда я впервые увидел веб через графический браузер (до этого у меня был опыт выхода в интернет через терминал на базе i80286 через текстовый браузер Lynx), у меня была выделенка, дело было в Казанском Государственном Университете и ещё очень долго я не знал что такое диалап и оплата за трафик.
Сейчас выделенки у большинства, но нередко встречается и такое, что клиент приходит на сайт через «дохлый канал» или с оплатой по трафику (например, через сотовый телефон).
Хорошо было бы об этом
Я вижу несколько путей.
- можно замерить время за которое страницу удалось отдать клиенту целиком. У меня пока нет оформившихся мыслей о том как это делать и есть недостаток — когда мы узнали о том, что у клиента плохой канал, содержимое уже выдали, ничего поменять нельзя. Можно выдавать
chunked-контент, как предлагал Сергей Чикуёнок, но первый кусок должен быть значительным - после загрузки страницы «пропинговать» хост. То есть обратиться через XHR на свой же сайт и замерить время ответа. Опять же, что делать с этими данными? Есть возможность в следующий раз показать более бедное содержимое, но следующий запрос может идти через другой канал. Возможное решение — сохранять
IP-адрес запроса - смотреть с какого браузера клиент приходит, если это «Опера Мини», вероятнее всего, канал плохой или с оплатой
- опять же «Опера», если включена функция «Опера Турбо» (определяется
по IP-адресу клиента), клиент экономит трафик, значит канал с оплатой - проверить грузятся ли картинки, способов много, но данные получаем постфактум, после загрузки страницы. Логика та же — выключил картинки, экономит. Загрузку Flash контролировать смысла не имеет — многие выключают, чтобы не видеть рекламы
- проверять не пришёл ли человек через канал сотового оператора
(по IP-адресу). Безлимиток, которые бы не деградировали по скорости послекакого-то лимита пока исчезающе мало, так что имеет смысл отдавать в этом случае «обеднённый» контент. Мобильные браузеры определять смысла не имеет — клиент может прийти через WiFi - в комментариях подсказали, что в «Андроидах» 2.2 и выше есть специальное
API, чтобы определять способ подключения - ещё вариант из комментариев — определять модель телефона/планшета и по базе смотреть есть ли у него GSM/3G или WiFi
Кто-нибудь ещёкакие-то пути видит?
Комментарии 37
имхо, решать за пользователя какой контент отдавать — полный или обрезанный — зло. ненавижу когда мне, когда захожу с планшета на яндекс или на жж, пытаются без спроса подсунуть мобильную версию.
Кнопка нужна, но за пользователя, конечно же, нужно решить изначально. Пользователь ленивый и ничего лишнего тыкать не будет :)
Зло, когда пользователь не имеет права выбора, если такое право есть, то при запоминании выбора пользователя ничего страшного в автоматическом определении — не вижу.
Второй вариант: переложить решение загружать или не загружать очередной блок страницы на браузер.
В первом запросе браузеру возвращается список «частей» страницы и их «значимость» — чтобы
Увеличить скорость загрузки главного контента, сэкономить клиенту деньги.
Кнопка должна быть __в браузере__, и её нажатие (с залипанием) должно означать, что браузер в заголовке попросит компактную версию. Все остальные пути, имхо — костыли.
Увы, все браузеры делают буржуины, а им это, наверное, и не надо. Такая кнопка (чисто условно) есть в «Опере» — это «Опера Турбо», если человек её нажал, значит он гарантированно экономит трафик.
Ага, загрузить главное, а потом подгрузить неглавное, если главное подгрузилось быстро.
Комментарий для Евгения Степанищева:
Либо у него сайт открывается через прокси оперы заметно быстрее, чем обычным путём — и такое случается.
О! Спасибо, это ценно.
Комментарий дляmr-simm.livejournal.com:
Если он согласен мириться с тем, что вся графика портится «Турбой» (там качество снижается для экономии), то ему можно показывать «обеднённый» контент.
«если человек её нажал, значит он гарантированно экономит трафик»
Или у него на работе суровые админы.
Обходит firewall? Ну так он всё равно гарантированно получает ухудшенных контент (пережатые картинки), так что можно и лишнее сбросить.
А потом я же не предлагаю отказаться от кнопки «у меня плохой/нормальный канал».
Из конструктивных мыслей пока пара глупостей.
Определять название и capabilities браузера, пытаясь понять тип устройства.
Ещё реферер может дать представление, с насколько навороченного ресурса пришёл посетитель. А если пришёл, например, с яндекса, то между yandex.ru и m.yandex.ru есть разница — тоже можно делать выводы.
Уже повод не давать эту телефону лишнего.
Да, можно. Тем более, что API для определения что за мобила пришла на страницу есть: http://api.yandex.ru/detector/doc/dg/conce … sponse.xml
Некоторые пользуются мобильной версии, потому что не знают, что можно переключиться на полную.
Воистину так. Но тут смысл ещё в том, чтоб всю эвристику по вычислению возможностей устройства переложить на поисковики.По-хорошему, это морда Яндекса дожлна быть умной и не швырять VGA-андроид с хромом на мобильную версию (сейчас, похоже, не так). А мы могли бы этим пользоваться.
Комментарий дляboltai-shaltai:
Ну тогда Мини выкидываем, Турбу оставляем.
Да мы уже можем пользоваться. Вот же: http://api.yandex.ru/detector/doc/dg/conce … sponse.xml
Комментарий для Евгения Степанищева:
Реферером попроще было б:-)
Комментарий дляboltai-shaltai:
Только часто ли переходят с «Яндекса»?
это ж не достаточный признак — так, намёк, что не с быстрого и большого десктопа чувак пришёл, надо аккуратнее с ним.
Через API можно со 100% уверенностью сказать (ну или почти со 100%) мобильное устройство или нет.
Для мобильных браузеров всегда нужно делать оптимизированную мобильную версию и ссылку в самом вверху для перехода на версию для декстопов если через wifi сидят или через безлимитку быструю.
А для тех у кого медленный канал или помегабайтная тарификация резать контент очень глупо. За счет чего ты хочешь уменьшить скорость загрузки уже оптимизированного сайта, уменьшить качество картинок или обрезать фукционал или контент?
Вот тебе самый идиотский пример реализации фотогалереи:
фотка и кнопки туда сюда, при нажатии на которые подгружаются другие картинки, вместо того чтобы подгрузить сразу 10 картинок и посмотреть их, сидишь нажимаешь далее и ждешь по 20 секунд пока загрузится след фотография. Лишняя трата времени
Комментарий для 0range.ru:
Убрать некоторые блоки, уменьшить картинки, убрать «красивости», баннеры и так далее.
Не понимаю что ты пытаешься иллюстрировать. Ведь это твоя реализациячего-то, а не моя.
В случае определения
Что такое «i»? Букву «m» я понимаю — это «mobile».
Ну помегабайтную тарификацию ты никак не просечешь фактически, а скорость канала можно замерить, если можно замерить скорость загрузки favicon, так как он грузится обычно одни из первых.
Ну по уму у кого медленный инет или дорогой, обычно просто вырубают флеш, картинки, js и у них получается фактически урезанная версия, главное чтобы сайт был граммотно сверстан.
Если отключить флеш, картинки, js и сжать html css, то фактически получаем 5 — 10 килобайт в среднем, даже на жопорезе будет летать :)
Комментарий для 0range.ru:
Фактически, нет. Но можно попробовать догадаться, способы я перечислил.
Первым грузится HTML и именно в нём всё самое интересное.
У меня просто некоторые размышления, они может быть покажутся глупыми, но вы уж не судите строго.
Если завязываться на вещи вроде провайдера,
Если же пытаться измерять фактическую скорость, то результат от запроса к запросу будет всегда разным, и как будто бы более реальным. Но, например, может сильно соврать уже в другую сторону — именно в эту секунду в соседнем табе
Лично я даже предположить не могу — что вреднее: постоянное значение, т.е. отсутствие информации о фактическом «ворклоаде» именно в данную секунду, или же наоборот — наличие такой информации еще вреднее.
По поводу измерения конечно тоже сложно — наверное нужно городить
Появилась мысль, если бы
А вообще, конечно да, для «рядовых» разработчиков было бы лучше если бы такую информацию сразу можно было получать от всех брозеров в параметрах запроса (ведь с
Еще бредовая может быть идея, но если бы все крупные сайты (яндекс, гугл) делали такое измерение постфактум и складывали бы результат измерения + дату в куку.. )
Канал может быть и не симметричным (xDSL, например)
Чужую куку сайт прочитать не может. Так что эту информацию будут знать только те, кто делал замеры.
Ну да, разумеется, это может быть aDSL или что угодно, но я предположил, что вас в первую очередь интересует как раз таки «download», ну а скорость загрузки заголовков ответа от скорости загрузки тела ответа в общем случае, наверняка, не отличается.
Да,как-то не учел.
Еще подумал, что любые подобные способы измерений (chunked, заголовки, XHR) могут быть не эффективны, если клиентские прокси сервера будут сразу все забирать с большой скоростью, это наверное надо смотреть как они обычно работают. Но, наверное, чаще всего прокси находится «ближе» к клиенту, хотя и в этом случае прокси может скармливать это конечному клиенту применив «throttling».
Впрочем, разделить по айпи адресам пользователей тарифов с помегабайтной оплатой и пользователей безлимитки нельзя.
Еще одно ограничение — эти диапазоны айпи, как правило, используются и телефонами, и модемами.