Движок бесплатного аудита проверяет сайт по десяткам признаков. На вопрос «почему это идёт небыстро» обычно отвечают догадкой: сеть, чужой сервер, много проверок. Мы померили — и больше половины времени оказалось не в проверках.
Как мерили
Код движка не трогали. Подменили одну функцию — ту, что переводит имя сайта в адрес, — обёрткой с секундомером и счётчиком:
real = socket.getaddrinfo
def timed(host, port, *a, **k):
t0 = time.perf_counter()
try:
return real(host, port, *a, **k)
finally:
stats[host] += time.perf_counter() - t0
socket.getaddrinfo = timed
Дальше — аудит по восьми настоящим сайтам из своего списка компаний Екатеринбурга. Замер 4 сентября 2026 года.
Что показал прогон
| Сайт | Всего | Разрешение имён | Доля | Запросов |
|---|---|---|---|---|
| ekaterinburg.150bar.ru | 6,9 с | 3,8 с | 55% | 38 |
| aquagizer.ru | 6,8 с | 3,0 с | 45% | 36 |
| bkfcarwash.ru | 7,6 с | 2,5 с | 33% | 36 |
| мойка-драйв.рф | 0,8 с | 0,7 с | 91% | 3 |
| kolesa-nedorogo.ru | 6,1 с | 4,0 с | 65% | 40 |
| pro-wash.info | 2,9 с | 2,9 с | 100% | 3 |
| sto15.ru | 6,9 с | 2,9 с | 42% | 37 |
| ugcentr96.ru | 0,4 с | 0,4 с | 100% | 3 |
Итого 38,2 секунды, из них 20,1 секунды в разрешении имён — 53%.
Главное объясняет последний столбец: 36–40 запросов к службе имён за один аудит одного сайта. Имя при этом одно и то же.
Почему так вышло
В движке стоит защита от подстановки чужих адресов: перед запросом проверяется, что имя ведёт на публичный адрес, а не в локальную сеть. Проверка правильная и нужная. Но она разрешает имя на каждом запросе и ничего не запоминает.
Проверок десятки, у каждой свой запрос — отсюда четыре десятка одинаковых обращений к резолверу. На быстром резолвере это незаметно, на медленном становится основным временем работы. Строки с тремя запросами — сайты, до проверок не дошедшие: имя не разрешилось или сервер не ответил, и всё время ушло в ожидание.
Проверили гипотезу, а не поверили ей
Добавили кэш на время прогона — одно имя разрешается один раз — и повторили замер на тех же восьми сайтах:
| Всего | Разрешение имён | Доля | |
|---|---|---|---|
| Как есть | 38,2 с | 20,1 с | 53% |
| С кэшем на прогон | 23,2 с | 5,4 с | 23% |
Пятнадцать секунд из тридцати восьми — около 39% времени аудита — уходило на повторное выяснение уже известного. Результаты проверок не изменились.
Одному прогону верить нельзя, поэтому каждый вариант прогнали дважды: без кэша 38,2 и 37,5 секунды, с кэшем 23,2 и 22,9. Разброс между повторами меньше разницы между вариантами — на этом основании вывод и делается.
Чего мы не подтвердили
В плане работ эта тема записана с числами «241 секунда из 249». Записи того замера в проекте нет: ни в истории правок, ни в базе знаний. Воспроизвести такие пропорции на своих данных не вышло — у нас 53%, а не 97%.
Публикуем измеренное сами, прежнюю цифру не повторяем. Мера доверия к числу — возможность его перепроверить, и правило действует против собственных заметок тоже.
Как проверить скорость сайта у себя
- Профилируйте, а не предполагайте. «Медленно из-за сети» — гипотеза, и проверяется она за десять минут подменой одной функции.
- Ищите повторы, а не тяжёлые места. Здесь ни одна операция не была долгой: 0,1–0,3 секунды на запрос. Дорогим оказалось их количество.
- Не путайте медленный сайт с медленным инструментом. В показанном времени больше половины было нашей собственной работой, а не свойством сайта.
- Повторяйте замер. Один прогон ничего не доказывает; два одинаковых — уже основание.
Так же мы дважды ошибались, измеряя скорость своего сайта, и так же нашли дефект, который не был виден глазами. Проверить скорость своего сайта нашим движком можно на отдельной странице — она мерит по живому серверу и показывает каждую цифру с объяснением.
