Перейти к содержимому
SEO/Опубликовано 4 сентября 2026 г./5 мин

Половина времени нашего аудита уходила на разрешение имён

Мы профилировали собственный движок аудита и нашли, что больше половины времени уходит не на проверки, а на разрешение имён: 36-40 одинаковых запросов за один прогон. Кэш на время прогона сократил аудит на 39%.

Половина времени нашего аудита уходила на разрешение имён
С
Команда NEXFORCE
SEO-эксперт NEXFORCE

Движок бесплатного аудита проверяет сайт по десяткам признаков. На вопрос «почему это идёт небыстро» обычно отвечают догадкой: сеть, чужой сервер, много проверок. Мы померили — и больше половины времени оказалось не в проверках.

Как мерили

Код движка не трогали. Подменили одну функцию — ту, что переводит имя сайта в адрес, — обёрткой с секундомером и счётчиком:

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.ru6,9 с3,8 с55%38
aquagizer.ru6,8 с3,0 с45%36
bkfcarwash.ru7,6 с2,5 с33%36
мойка-драйв.рф0,8 с0,7 с91%3
kolesa-nedorogo.ru6,1 с4,0 с65%40
pro-wash.info2,9 с2,9 с100%3
sto15.ru6,9 с2,9 с42%37
ugcentr96.ru0,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 секунды на запрос. Дорогим оказалось их количество.
  • Не путайте медленный сайт с медленным инструментом. В показанном времени больше половины было нашей собственной работой, а не свойством сайта.
  • Повторяйте замер. Один прогон ничего не доказывает; два одинаковых — уже основание.

Так же мы дважды ошибались, измеряя скорость своего сайта, и так же нашли дефект, который не был виден глазами. Проверить скорость своего сайта нашим движком можно на отдельной странице — она мерит по живому серверу и показывает каждую цифру с объяснением.

Вопросы и ответы

FAQ по теме

Почему проверка сайта идёт медленно?+
Причину нужно измерять, а не угадывать. У нас медленным оказался не проверяемый сайт и не сеть, а собственный инструмент: он делал 36-40 одинаковых запросов к службе имён за один прогон, потому что проверка безопасности адреса вызывалась на каждый запрос и ничего не запоминала.
Как профилировать чужой код, не переписывая его?+
Подменить функцию, которую подозреваете, обёрткой с секундомером. Мы заменили socket.getaddrinfo на такую же функцию с замером времени и счётчиком вызовов — код движка при этом не менялся ни на строку, а картина стала видна сразу.
Сколько времени экономит кэш разрешения имён?+
По нашему замеру на восьми настоящих сайтах — около 39% всего времени аудита: 38 секунд против 23. Запросов к службе имён стало 3-7 вместо 36-40, а результат проверки не изменился.
Можно ли верить одному прогону?+
Нет. Мы прогнали оба варианта дважды: без кэша 38,2 и 37,5 секунды, с кэшем 23,2 и 22,9. Разброс между повторами меньше разницы между вариантами — только поэтому вывод и можно делать.