Пропустить навигацию

Методология

Краткий обзор

The Web Almanac — это проект, организованный HTTP Archive. HTTP Archive был запущен в 2010 Стивом Садерсом (Steve Souders), чтобы отслеживать развитие веба. Каждый месяц этот сервис анализирует содержимое миллионов веб-страниц и записывает терабайты метаданных в BigQuery для последующего анализ. Подробнее об HTTP Archive.

Задача Web Almanac заключается в том, чтобы сделать хранилищем данных HTTP Archive более доступным и понятным для веб-сообщества при помощи профильных экспертов. Представляйте это себе как ежегодное хранилище общедоступных сведений о состоянии веба с 2019 года (первое издание отчёта).

Выпуск Web Almanac за 2019 года состоит из четырех разделов: контент, пользовательские ощущения, публикация и распространение. Каждая часть отчёта является одним из краеугольных камней и состоит из глав, в которых она рассматриваются с различных аспектов. Например, вторая часть представляет пользовательские ощущения и включает главы о производительности, безопасности, доступности, SEO, PWA и мобильном вебе.

О наборе данных

Набор данных HTTP Archive постоянно растёт каждый месяц. Для издания Web Almanac 2019 года, если в главе не указано иное, все метрики были взяты из сканирования сайтов за июль 2019 года. Эти показатели можно свободно запросить из таблиц с префиксом 2019_07_01 на BigQuery.

Все метрики, представленные в Web Almanac, можно получить из набора данных на BigQuery. Вы можете посмотреть запросы, используемые во всех главах, в нашем репозитории на GitHub.

Обратите внимание, что некоторые запросы могут быть достаточно большими и дорогостоящими для выполнения, так как оплата за пользование BigQuery начинается после обработки одного терабайта данных. Для того, чтобы помочь вам контролировать расходы, прочитайте пост Тима Кадлека (Tim Kadlec) Using BigQuery Without Breaking the Bank.

Например, чтобы выяснить среднее количество байт JavaScript-кода в десктопной и мобильной версиях страницы, посмотрите запрос 01_01b.sql.

#standardSQL
# 01_01b: Distribution of JS bytes by client
SELECT
  percentile,
  _TABLE_SUFFIX AS client,
  APPROX_QUANTILES(ROUND(bytesJs / 1024, 2), 1000)[OFFSET(percentile * 10)] AS js_kbytes
FROM
  `httparchive.summary_pages.2019_07_01_*`,
  UNNEST([10, 25, 50, 75, 90]) AS percentile
GROUP BY
  percentile,
  client
ORDER BY
  percentile,
  client

Результаты каждой метрики доступны для просмотра в таблицах, созданных специально для каждой главы, например, результаты по JavaScript.

Сайты

В набор данных находятся 5,790,700 сайтов. Из них 5,297,442 — мобильные сайты, а 4,371,973 — обычные сайты (или десктопные, т.е. для компьютеров). Большинство этих сайтов состоят как в мобильных, так в и десктопных выборках.

HTTP Archive берёт URL-адреса сайтов для тестирования из отчёта Chrome UX Report. Отчёт Chrome UX Report — это общедоступный набор данных от Google, который агрегирует информацию о пользовательских ощущениях от использования миллионов сайтов, активно посещаемых с помощью браузера Chrome. В этом отчете содержится актуальный список сайтов, отражающий реальное использование веба. Набор данных отчета Chrome UX учитывает тип устройства, используемое для просмотра сайтов.

HTTP Archive для сканирования сайтов в июле 2019 года (на основе которых строится текущий Web Almanac) использовал последнюю редакцию отчёта Chrome UX Report (от 19 мая, номер набора данных 201905). Этот набор данных был выпущен 11 июня 2019 года и содержит сайты, посещенные пользователями Chrome в течение июня.

Из-за ограниченности ресурсов, HTTP Archive может проверить только одну страницу каждого сайта в отчете Chrome UX Report. Поэтому чтобы можно было сопоставить данные, в отчёте рассматриваются только главные страницы. Следует отметить, что это приводит к искажению результатов, поскольку главная страница не всегда является репрезентативной для всего сайта.

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

Метрики

HTTP Archive собирает тысячи метрик, отражающих устройство веба. Эта коллекция включает основные метрики, такие как количество байт на страницу, была ли страница загружена по протоколу HTTPS, а также отдельные заголовки запросов и ответов. Большинство из этих метрик предоставляет WebPageTest, выступающий в качестве исполнителя тестов для каждого сайта.

Другие инструменты тестирования используются для определения более сложных метрик страницы. Например, Lighthouse запускается для аудита качества страницы с разных аспектов, таких как доступности или SEO. В следующем разделе Инструменты содержится более подробная информация по каждому из применяемых инструментов.

Чтобы обойти ограничения, присущие синтетическим (лабораторным) наборам данных, Web Almanac использует отчёт Chrome UX Report для получения метрик, связанных с пользовательскими ощущениями от посещения сайтов, особенное внимание уделяется производительности.

Некоторые метрики полностью недоступны. Например, не всегда удаётся возможность обнаружить технологии, используемые для создания сайта. Если сайт был создан при помощи утилиты create-react-app, то мы знаем, что он использует библиотеку React, однако это не означает, что применялся именно этот инструмент сборки. Если инструменты разработки не оставляли никаких следов в коде, которые бы указывали на них, то невозможно определить их использование.

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

Инструменты

Web Almanac нельзя представить без использования перечисленных ниже опенсорс-инструментов.

WebPageTest

WebPageTest — хорошо известный инструмент тестирования производительности веб-страниц и главная опора HTTP Archive. Мы используем приватный экземпляр WebPageTest вместе с агентами тестирования — браузерами, которые проверяют каждую веб-страницу. Обычные и мобильные сайты проверяются на разных конфигурациях:

Конфигурация Компьютер Мобильное устройство
Устройство Виртуальная машина с Linux Эмулируемый Moto G4
User Agent Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 PTST/190704.170731 Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4) Build/MPJ24.139-64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36 PTST/190628.140653
Локация Редвуд-Сити, штат Калифорния, США
Даллес, штат Орегон, США
Редвуд-Сити, штат Калифорния, США
Даллес, штат Орегон, США
Тип подключения Кабельный (5/1 Mbps 28ms RTT) 3G (1.600/0.768 Mbps 300ms RTT)
Вьюпорт 1024 x 768px 512 x 360px

Обычные сайты запускаются из Chrome на виртуальной машине с Linux. Скорость сети эквивалентна кабельному соединению.

Сайты для мобильных устройств запускаются в мобильном Chrome на эмулируемом устройстве Moto G4 со скоростью сети, эквивалентной 3G-соединению. Обратите внимание, что в эмулируемом устройстве заголовок User Agent будет определяться как Chrome 65, но на самом деле это Chrome 75.

Тесты выполняются из двух локаций в США: Калифорния и Орегон. HTTP Archive имеет собственное оборудование, на которой запущен агент тестирования, которое находится в дата-центре Internet Archive в Калифорнии. По мере необходимости добавляются дополнительные агенты тестирования на локацию us-west-1 из Google Cloud Platform в штате Орегон.

Приватный экземпляр WebPageTest в HTTP Archive синхронизирован с последней публичной версией и дополнен собственными метриками. Это фрагменты JavaScript-кода, которые выполняются на каждом сайте в конце теста. Собственная метрика в файле almanac.js включает в себя несколько метрик, которые зависят от состояния DOM.

Результаты каждого теста доступны в виде HAR-файла — архивного файла в формате JSON, содержащего метаданные о веб-странице.

Lighthouse

Lighthouse — это автоматизированный инструмент контроля качества сайтов от компании Google. Он проводит проверку страницу по разным метрикам, выявляя ошибки вроде неоптимизированных изображений или недоступного контента.

HTTP Archive запускает последнюю версию Lighthouse на всех мобильных веб-страницах, декстопные версии не учитываются в силу ограниченности ресурсов. На момент сканирования за июль 2019 года HTTP Archive использовался Lighthouse версии 5.1.0.

Lighthouse запускается в виде отдельного теста внутри WebPageTest, но с использованием отдельной настройки конфигурации:

Конфигурация Значение
Замедление процессора 1x*
Пропускная способность скачивания 1.6 Mbps
Пропускная способность загрузки 0.768 Mbps
RTT 150 ms

* Обратите внимание, что Lighthouse обычно настроен на 4-кратное замедление процессора, но из-за бага в WebPageTest, на момент проведения тестов процессор был замедлен в 1 раз.

Для получения более подробной информации о Lighthouse и аудитах, используемых HTTP Archive, обратитесь к документации Lighthouse для разработчиков.

Wappalyzer

Wappalyzer — это инструмент для определения используемых на сайте технологий. Обнаруживаются 64 категории технологий, начиная от JavaScript-фреймворков и заканчивая CMS-платформами и даже криптовалютными майнерами. Всего поддерживается отслеживание более 1200 технологий.

HTTP Archive запускает последнюю версию Wappalyzer на всех веб-страниц. По состоянию на июль 2019 года Web Almanac использовал Wappalyzerверсии 5.8.3.

Многие главы снабжены данными из Wappalyzer, которые анализируют популярность инструментов, таких как WordPress, Bootstrap и jQuery. Например, информация из глав Электронная коммерция и CMS в значительной степени опирается на соответствующих категориях технологий Ecommerce и CMS, обнаруживаемых Wappalyzer.

Все инструменты распознания используемых технологий, включая Wappalyzer, имеют свои ограничения. Достоверность результатов всегда будет зависеть от точности алгоритмов определения. Web Almanac добавляет примечание в каждой главе, где используется Wappalyzer, но его анализ по определённым причинам может быть не точным.

Отчёт Chrome UX Report

Chrome UX Report — это публичный набор данных, содержащий пользовательские ощущения от посещения сайтов через браузер Chrome. Впечатления пользователей сгруппированы по каждому сайту (например, https://www.example.com). Набор данных включает распределение UX-метрик типа отрисовки, загрузки, взаимодействия и стабильности раскладки. В дополнение к группировке по месяцам, восприятие сайта пользователем также можно разбить по таким параметрам, как страна, форм-фактор устройства (десктоп, телефон, планшет) и тип соединения (4G, 3G и т.д.).

В основе метрик Web Almanac, относящиеся к пользовательским впечатлениям от использования сайтов, лежит набор данных отчёта Chrome UX Report за июль 2019 года (номер 201907).

Подробнее о наборе данных можно узнать в руководстве Using the Chrome UX Report on BigQuery на сайте web.dev.

Сторонний код в вебе

Third Party Web — это исследовательский проект Патрика Халса (Patrick Hulce), автора главы про сторонний код, который использует данные HTTP Archive и Lighthouse для определения и анализа влияния ресурсов сторонних сервисов на веб.

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

Несколько глав Web Almanac используют домены и категории из этого набора данных, чтобы выяснить влияние сторонних сервисов.

Rework CSS

Rework CSS — это парсер CSS-кода, написанный на JavaScript. Он анализирует все таблицы стилей, распознавая каждое правило, селектор, директиву и значение из CSS-стилей, а затем возвращает объект со всеми этим данными, преобразованный в JSON-формат.

Этот специальный инструмент значительно улучшил точность многих метрик в главе по CSS. Для этого CSS-код во всех внешних таблицах стилях и в встроенных блоках на каждой странице был проанализирован. Читайте следующую ветку с обсуждениями, если хотите подробнее узнать о том, как этот инструмент был интегрирован с набором данных HTTP Archive на BigQuery.

Аналитический процесс

Планирование и реализация Web Almanac заняло около года при сотрудничестве более сотни участников из веб-сообщества. В этом разделе объясняется про главы Web Almanac, как были получены метрики для них, и как они обрабатывались.

Поиск

Создание Web Almanac началось в январе 2019 года как пост на форуме HTTP Archive с описанием инициативы и поиском заинтересованных людей. В марте 2019 года мы создали публичный документ с нашим коллективным обсуждением, в котором любой человек из веб-сообщества может предложить идеи для глав или метрик. Это был важнейший шаг для того, чтобы мы сосредоточились на том, что было интересно для сообщества, с учётом мнения людей самого разного происхождения.

В результате этого коллективного обсуждения (или мозгового штурма) было принято 20 глав, и мы начали отбирать экспертов и рецензентов для каждой главы. В этом процессе имело место некоторая внутренняя предвзятость из-за трудности привлечения волонтеров к участию в проекте такого масштаба. Таким образом, многие из участников являются членами одного профессионального круга. Одной из чёткой и конкретной целью будущих изданий Web Almanac является ещё большее вовлечение в него представителей меньшинств в качестве авторов и рецензентов.

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

Анализ

В июне 2019 года, имея составленный список метрик и глав, аналитики данных отсортировали метрики для дальнейшего анализа. В некоторых случаях мы создалисобственные метрики для заполнения пробелов в нашем аналитическом потенциале.

В течение июля 2019 года HTTP Archive обработал несколько миллионов сайтов, чтобы собрать метаданные для Web Almanac.

Начиная с августа 2019 года аналитики начали писать запросы для извлечения результатов по каждой метрике. В общей сложности было вручную написано 431 запроса! Вы можете посмотреть все запросы по годам и главам в репозитории запросов на GitHub.

Обработка

Авторы работали с аналитиками, чтобы корректно обработать результаты и подготовить соответствующие выводы. При написании своих глав авторы опирались на полученные статистические выводы, чтобы сформировать своё видение состояния веба. Рецензенты сотрудничали с авторами, чтобы добиться правильности анализа с технической точки зрения.

Чтобы сделать результаты более понятными для читателей, веб-разработчики и аналитики визуализировали их. Некоторые визуализации для большой ясности были упрощены. Например, вместо того, чтобы показывать полное распределение, показывается только несколько процентилей. Если не указано иное, все распределения суммируются с использованием перцентилей, прежде всего медианы (50-й перцентиль), а не средних значений.

Наконец, редакторы просмотрели главы, чтобы исправить простые грамматические ошибки и добиться согласованности во время чтения.

Перспективы на будущее

Выпуск Web Almanac в 2019 году, как мы надеемся, станет началом ежегодной традицией по оценке позитивных изменений в жизни веб-сообщества. Выпуск очередного этого отчёта стал возможным благодаря колоссальной работе, проделанной множеством самоотверженных участников, и мы будем использовать как можно эффективнее результаты этой работы, чтобы сделать будущие выпуски ещё более лучше.

Если вам интересно поучаствовать в издании Web Almanac в 2020 году, дайте нам знать об этом, заполнив форму. Давайте работать сообща, чтобы отслеживать состояние веба!