Современные информационные технологии/2. Вычислительная техника и программирование

Крылов Е.В., Аникин В.К., Коваль Ю.М.

Национальный технический университет Украины "Киевский политехнический институт имени Игоря Сикорского"

Методика загрузки адаптивных изображений в Web-приложениях

Есть актуальная проблема – уменьшение времени загрузки Web-приложений на мобильных устройствах. После проведенных исследований StatCounter можно заметить, что количество переходов на сайт с мобильных устройств возрастает. На 2016 год 51.3 % людей в мире использовали мобильные девайсы для выхода в интернет. Также аналитики из компании Google определили, что пользователь замечает задержку загрузки на 0.4 секунды. В среднем человек, который загружает сайт с мобильного устройства готов ждать 6-10 секунд. После этого времени он может покинуть ресурс, что будет невыгодно. А если это интернет-магазин, то он может потерять своего покупателя.

Очень много работ проводится для оптимизации загрузки Web-приложений. На данный момент нет единого решения. Есть разные методы:

·       Уменьшение объема загружаемых страниц

·       Уменьшение объема графики

·       Уменьшение количества запросов браузера

·       Кэширование данных

·       Сокращение размера кода css и javascript

Самое трудное – это оптимизировать изображение. Есть много проблем. Самые распространённые из них:

·       Выбор нужного формата (векторный, растровый)

·       Выбор алгоритма сжатия изображения (JPEG, PNG, GIF)

·       Выбор параметров сжатия (с потерями, без потерь)

·       Сделать несколько изображений под разное разрешение экранов

Под каждый экран нет возможности создавать изображение. Во-первых, каждое изображение занимает много места, что сказывается на быстродействии. Во-вторых, нет определенного стандарта расширения экрана. Сейчас используют несколько изображений – большого, среднего и малого размера. Каждое изображение подгружается браузером, что занимает время, а если пользователь использует мобильный интернет, то загрузка изображения для стационарной версии может затратить много ресурсов, как временных, так и трафика. После выбора изображения браузер корректирует размер под окно отображения. Это тоже занимает время.

С появлением метода Client Hints от Google разработчиков можно получить 3 параметра:

·       DPR – device pixel ratio, «плотность пикселей», величина аналогичная разрешению

·       Viewport-Width – размеры экрана

·       Width – ширина изображения на странице

[1]

 Этот метод определяет набор полей заголовка HTTP-запроса. Поле заголовка клиентского запроса – это поле заголовка HTTP, которое используется HTTP-клиентами для указания данных конфигурации, которые могут использоваться сервером для выбора подходящего ответа. Клиенты управляют тем, какие Client Hints отправляются в запросах, исходя из их настроек по умолчанию, конфигурации пользователя и /или предпочтений. Разработчики могут предоставлять механизмы выбора пользователя, чтобы пользователи могли сбалансировать проблемы конфиденциальности с ограничениями полосы пропускания.

Клиент-сервер или промежуточный прокси-сервер могут использовать механизм выбора для согласования, какие поля должны быть представлены, чтобы обеспечить эффективную адаптацию контента. [2]

 Данный метод позволит сразу узнать размер экрана, и какая картинка потребуется для него. Таким образом не надо подгружать сразу все картинки, что сократить время загрузки. С появлением такого метода можно делать преобразование изображения на стороне сервера и загружать картинку требуемого размера и качества.

Если это мобильное устройство, то для уменьшения размера изображения используем масштабирование методом сверток. Этот метод использует фильтры. Они могут задаваться отдельной функцией и не быть привязаны к самому методу. Можно выбрать оптимальный фильтр для каждого случая. Скорость его работы зависит от таких параметров как:

·       Размер исходного изображения

·       Размер конечного изображения

·       Размер окна фильтра

Данный метод основывается на двух рядах значений. Первый ряд – это коэффициенты фильтра, а второй – интенсивность каналов пикселей. В результате выходит сумма произведений всех членов попарно. Это и есть интенсивность одного канала одного пикселя. Операция проходит горизонтально и вертикально, сделав два подхода.[3]

Метод оптимальный и универсальный. Он дает достаточно хороший и предугадываемый результат для широкого диапазона коэффициентов масштабирования, не содержит искажений геометрии на локальном уровне. Тем самым качество отображения не будет особо теряться, а размер уменьшиться. Единственный недостаток метода сверток – это производительность.

После масштабирования, изображение отправляется на сторону клиента и выводится прогрессивно, что позволяет пользователю увидеть часть изображения сразу.

Таким образом, данная методика сокращает время загрузки страницы Web-приложения. Она позволяет пользователю в течении нескольких секунд увидеть картинку, хоть и не сразу в хорошем качестве, но у него уже будет впечатление «моментальной» загрузки страницы. Это привлечет его внимание и он будет оставаться на сайте. Пользователь сможет просматривать контент пока идет загрузка изображений.

Литература:

1.    https://www.searchengines.ru/tehnologia-client-hints.html

2.    http://httpwg.org/http-extensions/client-hints.html

3.    https://habrahabr.ru/post/321744/