Оптимизация эффективности контента

Наши веб-приложения продолжают расти в своих масштабах, амбициях и функциональности – и это хорошо. Однако неумолимый марш к более богатому вебу стимулирует другую тенденцию: объем данных, загружаемых каждым приложением, продолжает неуклонно расти. Чтобы обеспечить высокую производительность, мы должны оптимизировать доставку каждого байта!

Как выглядит современное веб-приложение? Ответить на этот вопрос нам поможет HTTP Archive. В рамках проекта периодически сканируются самые популярные сайты (более 300 000 из списка Alexa Top 1M), а также регистрируются и агрегируются аналитические данные о количестве ресурсов, типах контента и других метаданных для каждого отдельного сайта.

Тенденции HTTP Archive

Процентиль 50 75-й процентиль 90-й процентиль
HTML 13 КБ 26 КБ 54 КБ
Изображения 528 КБ 1213 КБ 2384 КБ
JavaScript 207 КБ 385 КБ 587 КБ
CSS 24 КБ 53 КБ 108 КБ
Другое 282 КБ 308 КБ 353 КБ
Итого 1054 КБ 1985 КБ 3486 КБ

На диаграмме выше показана тенденция роста объема скачанных данных для популярных сайтов в период с января 2013 г. по январь 2014 г. Конечно, не все сайты растут с одинаковой скоростью и требуют одинакового объема данных, поэтому мы выделяем разные квантили в распределении: 50-й (медиана), 75-й и 90-й.

В начале 2014 года средний сайт состоял из 75 запросов, которые в сумме составляли 1054 КБ переданных байтов, а общее количество байтов (и запросов) неуклонно росло в течение предыдущего года. Это не должно удивлять, но имеет важные последствия для производительности: да, скорость интернета растет, но она растет с разной скоростью в разных странах, и многие пользователи по-прежнему сталкиваются с ограничениями на передачу данных и дорогими тарифными планами с оплатой за трафик, особенно на мобильных устройствах.

В отличие от настольных аналогов, веб-приложения не требуют отдельного процесса установки: введите URL-адрес, и мы приступим к работе – это ключевая особенность Интернета. Однако для этого нам часто приходится извлекать десятки, а иногда и сотни различных ресурсов, которые могут составлять мегабайты данных и должны объединяться за сотни миллисекунд, чтобы обеспечить мгновенную работу в Интернете, к которой мы стремимся.

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