Измерительный движок и клиентская архитектура
Наш тест скорости построен на базе @cloudflare/speedtest — открытого измерительного движка Cloudflare на языке JavaScript (лицензия MIT). Он полностью выполняется в изолированной безопасной среде веб-браузера пользователя, не требуя плагинов, отдельных исполняемых файлов или прав администратора.
Чтобы страницы с техническими статьями открывались мгновенно, измерительный движок импортируется динамически по требованию только при нажатии пользователем кнопки «Запустить тест». Мы не вносим изменений в математический алгоритм движка: все показатели рассчитываются исключительно на основе реальных сетевых событий, зарегистрированных браузером.
Инфраструктура пограничных серверов Anycast
Все HTTP-запросы на скачивание, отдачу и проверку задержки направляются к глобальной пограничной сети Cloudflare на домен speed.cloudflare.com по протоколу BGP Anycast:
- Автоматическая маршрутизация к ближайшему узлу: Пользователю не нужно выбирать сервер вручную из сомнительных списков. Магистральные маршрутизаторы интернета автоматически направляют пакеты в ближайшую к вам точку присутствия (PoP) Cloudflare.
- Объективная оценка «последней мили»: Сервер расположен в вашем городе или на магистральном узле обмена трафиком вашего провайдера, что позволяет протестировать пропускную способность абонентской линии без искажений от перегруженных транзитных каналов.
Последовательность тестов и фазы выполнения
- Фаза 1: Прогрев соединения: Выполняются нулевой запрос и запрос на 100 КБ для установки сессии TLS 1.3 и разрешения DNS-имени, исключая накладные расходы холодного старта из итоговых цифр.
- Фаза 2: Задержка и джиттер в покое: Отправляется серия из 21 запроса при ненагруженном канале с фиксацией медианы кругового времени (RTT).
- Фаза 3: Измерение входящей скорости (Download): Загружаются возрастающие блоки данных (от 256 КБ до 25 МБ и более) с хронометражем через Performance Resource Timing API.
- Фаза 4: Измерение исходящей скорости (Upload): Данные отправляются на сервер методом HTTP POST с фиксацией реального темпа передачи.
- Фаза 5: Потеря пакетов WebRTC: Отправляется поток UDP-датаграмм через TURN-реле для подсчета потерянных пакетов.