Время от времени, когда обсуждается вопрос о способах работы с изображениями, кто-то приходит и говорит: «Эй, ребята! Нам в действительности нужно, это знать Media Query, что позволит размещать изображения с высоким уровнем разрешения, для тех, у кого быстрое соединение, и с низким разрешением, для тех, у кого медленное соединение». На первом этапе многие согласились.
На первый взгляд, это имеет смысл. Высокое разрешение изображения влияет на время которое тратит устройство для их загрузки. Однако, если пользователь имеет низкую скорость соединения, то этот факт может стать для него негативным. И пользователь предпочтет в таком случае изображения с более низким разрешением, что положительно скажется на скорости загрузки. Пользователи с высоким доступом предпочтут изображения с высоким разрешением.
Если бы только у нас была информация о Media Query (и HTML элемент, который позволял бы нам использовать это), разработчики смогли бы иметь контролировать качество изображения в зависимости от пропускной способности, жизнь была бы отличной.
Как известно, распознавание Media Query является более успешным занятием, чем создание программы, которая бы точно прогнозировал погоду на следующий вторник.
Что такое пропускная способность
Так как мы обсуждаем пропускную способность, давайте остановимся на минуту, чтобы определить, что это такое.
Когда провайдеры публикуют свою скорость, то они обычно имеют в виду количество исходных данных, которые могут быть отправлены при идеальных условиях.
Это число имеет мало отношения к программистам. Нам нужна эффективная пропускная способность. На нее, как правило, влияет несколько факторов: пропускная способность сети, ее задержка, скорость потери пакетов, и протокол, который используется для загрузки данных. В нашем случае, протокол о котором идет речь – это TCP.
TCP является основным протоколом для надежной передачи данных в сети Интернет. Сам протокол имеет определенные расходы, что приводит к разнице между теоретической и практической пропускной способности. Также существует еще один фактор, влияющий на TCP.
Протокол не всегда использует всю пропускную способность, имеющуюся в его распоряжении, просто потому, что он не знает размера.
Отправка данных больше, чем пропускная способность может вызвать в сети перегрузку, которое приведет к катастрофическим последствиям в сети.Таким образом, TCP использует несколько механизмов управления перегрузкой: стартовое замедлениеи предотвращение перегрузок.
Каждое соединение TCP создается с очень ограниченной пропускной способности, параметр, который называется «congestion window». Этот параметр растет по экспоненте в течение времени, пока соединение TCP посылает достаточно данных, чтобы «заполнить трубу». Это стартовое замедление, которое может занять временной период до нескольких секунд, в зависимости от задержки сети. Тогда, TCP периодически пытается отправить еще немного данных, чтобы убедиться, что он может увеличить количество посылаемых данных, не вызывая перегрузок. Этот алгоритм называется «congestion-avoidance phase».
Оба этих механизма предполагают, что потеря пакетов всегда вызвана перегрузкой, и приводит к значительному сокращению «congestion window», а также скорости, с которой данные передаются. На беспроводных и мобильных сетях, это поведение не всегда идеально, потому, что они могут страдать от потери пакетов по иным причинам, (например, плохой прием), которые могут привести к низкому уровню использования сети.
Изменение пропускной способности
Пропускная способность, по самой своей природе, является переменной во времени. Во время загрузки одного ресурса, пропускная способность мобильных пользователей может существенно изменяться по многим причинам:
- Пользователь поменял тип сети или переместился по области покрытия сети.
- Другие пользователи поменяли тип сети на тот же, что и у данного пользователя.
- Перегрузка сети на стороне сервера, привело к падению.
Пропускная способность Wi-Fi в мобильных устройствах пользователи также может существенно различаться. В основном это связано с потерей пакетов, которая влияет на эффективную пропускную способность, потому что TCP считает потерю пакетов результатом перегрузки.
Пропускная способность пользователей стационарных компьютеров также может варьироваться в зависимости от типа соединения, хотя, скорее всего, не так значительно, как для пользователей мобильной связи и Wi-Fi. Пользователи ADSL могут страдать от погодных условий;
Еще одна вещь. Когда мы думаем о пропускной способности пользователей, мы учитываем соединения пользователя с сетью, но связь сервер с сетью, его загруженность, и его близость к пользователю также могут влиять на эффективность пропускной способности, которую видит браузер. Другая переменная в этой игре: сервер. Когда мы говорим, что мы хотим измерить пропускную способность, мы говорим о пропускной способности между пользователем и сервером, или просто о пропускной способности? Все зависит от того, где критический момент.
Эта непостоянная является основной причиной, почему прогнозы о будущей пропускной способности в большинстве своем неточные.
Сложности в измерении пропускной способности
Итак, прогнозировать пропускную способность сложно, но измерить ее легко, разве нет? В конце концов, браузер уже загружает информацию. Он знает ее размеры требуемое для загрузки время, число бит скачать, деленное на время, которое потребовалось, для загрузки. Может ли это быть трудным?
Ну, если вы хотите точно измерить пропускную способность, то это не так то и легко. Приведенные выше расчеты верны, когда вы загружаете большой файл при идеальных условиях соединения TCP. Но это редкий случай.
Давайте посмотрим типичный сценарий загрузки.
Загрузка начальная страница HTML
На этом этапе, большую часть времени браузер загружает HTML начальной страницы с новым соединением TCP. Это новое соединение TCP должно стараться не передавать больше данных, чем физическая связь может справиться, поэтому оно использует алгоритм стартового замедления. Это означ …
Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров