Перейти к основному содержимому
SiteScan.top

Сторонние скрипты: вес, который вы не писали

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

Производительность · Опубликовано: 3 октября 2026 г. · 6 мин чтения · Ольга Мирошник

Откройте вкладку Network почти на любом коммерческом сайте и посчитайте домены. Свой домен, CDN, а дальше длинный хвост: аналитика, менеджер тегов, два рекламных пикселя, чат-виджет, инструмент A/B-тестирования, сервис шрифтов, карта, встроенное видео. Ни строчки этого кода не написала ваша команда, ничего из него не проходит ревью в ваших пул-реквестах — и всё это выполняется с теми же правами, что и ваш собственный JavaScript.

Каждый тег добавили по уважительной причине люди, которым он был нужен. Беда в том, что за сумму не отвечает никто.

Во что обходится каждый новый источник

Установка соединения. Новый домен — это DNS-запрос, TCP-рукопожатие и TLS-согласование ещё до того, как придёт первый байт скрипта. На мобильной связи это легко несколько сотен миллисекунд на каждый источник, а скрипт, который подгружает другие скрипты с ещё одного домена, платит эту цену повторно.

Время главного потока. Сторонний JavaScript нужно скачать, разобрать и выполнить в том же потоке, который обрабатывает клики и касания. Чат-виджет, поднимающий целый UI-фреймворк, или A/B-инструмент, переписывающий DOM, напрямую конкурируют с взаимодействиями на вашей странице — и это видно по плохому INP (Interaction to Next Paint).

Блокировка рендеринга. Обычный <script src> в <head> без async или defer останавливает парсер, пока скрипт не будет загружен и выполнен. Некоторые сниппеты A/B-тестов делают это намеренно и прячут страницу до своего завершения, чтобы избежать мигания.

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

Приватность и согласие. Пиксель, сработавший до того, как посетитель ответил на cookie-баннер, отправляет его данные третьей стороне без согласия. Зачастую одной загрузки скрипта достаточно, чтобы передать IP-адрес и реферер.

Безопасность. Каждый внешний скрипт — часть вашей цепочки поставок. Если взломают вендора или CDN, код злоумышленника выполнится на вашей странице оформления заказа. Строгую Content Security Policy написать куда сложнее, когда список разрешённых источников растёт с каждым тегом.

Проведите инвентаризацию

Начинайте с фактов, а не с воспоминаний:

По каждому тегу задайте три вопроса. Кто за него отвечает? Если никто не может назвать человека или команду — это кандидат на удаление. Им ещё пользуются? Пиксели кампаний, закончившихся в прошлом году, и пробные версии так и не купленных инструментов — частая находка. Нужно ли ему грузиться на каждой странице и сразу? Обычно нет.

С первым шагом поможет отчёт SiteScan: он считает сторонние источники, с которых ваши страницы загружают ресурсы, и предупреждает, если их слишком много («Сократите число сторонних источников, с которых загружаются страницы»). Кроме того, он показывает обнаруженные на сайте технологии и виджеты — быстрый способ заметить забытый инструмент.

Приёмы, которые работают

Удаляйте. Самый быстрый скрипт — тот, которого нет. Удалить два мёртвых тега выгоднее, чем оптимизировать пять живых.

Откладывайте то, что осталось. Аналитике и большинству пикселей подходят async или defer, либо запуск из менеджера тегов после загрузки страницы. Всё, что не рисует первый экран, не должно его блокировать.

Загружайте по взаимодействию. Чат-виджету или видео с YouTube незачем стартовать, пока они никому не понадобились. Покажите лёгкий фасад — статичную кнопку или превью-картинку — и подгрузите настоящий компонент по клику:

<button class="chat-facade" type="button">Написать нам</button>
<script>
  document.querySelector(".chat-facade").addEventListener("click", () => {
    const s = document.createElement("script");
    s.src = "https://widget.example-chat.com/loader.js";
    document.head.append(s);
  }, { once: true });
</script>

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

Используйте preconnect экономно. <link rel="preconnect"> помогает для одного-двух сторонних источников на критическом пути. Если прописать его для десяти, вы просто потратите ранний трафик и сокеты на то, что не срочно.

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

Фиксируйте статичные файлы через Subresource Integrity. Для версионированной библиотеки на публичном CDN атрибут integrity заставит браузер отказаться от изменённого файла:

<script src="https://cdn.example.com/lib@2.4.1/lib.min.js"
        integrity="sha384-..."
        crossorigin="anonymous"></script>

SRI не работает со скриптами, которые вендор меняет на месте, — именно поэтому они и заслуживают самого пристального внимания.

Заведите бюджет. Договоритесь о лимите — числе сторонних источников, килобайтах стороннего JavaScript — и проверяйте его перед запуском каждого нового тега. Бюджет превращает «ещё один пиксель, и всё» в осознанное решение.

Чек-лист

  1. Для каждого стороннего источника записаны ответственный и назначение.
  2. Неиспользуемые теги и пиксели завершённых кампаний удалены.
  3. Ни один сторонний скрипт не блокирует отрисовку первого экрана.
  4. Чат-виджеты и встроенные видео грузятся по взаимодействию через фасад.
  5. Ничто, что отслеживает посетителей, не загружается до согласия.
  6. Preconnect используется только для одного-двух критичных источников.
  7. У статичных файлов с CDN есть атрибут integrity.
  8. Бюджет на сторонний код существует, и новые теги проверяются по нему.

Читайте также

Проверьте, что из этого есть на вашем сайте

Бесплатное сканирование покажет битые ссылки, ошибки JS и проблемы производительности за минуту.