Сторонние скрипты на сайте: когда чаты, пиксели и виджеты превращаются в технический долг

Сторонние скрипты на сайте – чаты, пиксели, виджеты и аналитика

Технический долг сайта

Современный сайт редко работает в одиночку.

К нему подключают аналитику. Затем рекламные пиксели. Онлайн-чат. Обратный звонок. Карту. Видео. Виджет отзывов. Антиспам. Систему аналитики поведения. Форму стороннего сервиса. Менеджер тегов.

Каждое решение по отдельности выглядит вполне разумно.

Проблема появляется через год или два, когда никто уже точно не помнит, зачем половина этого установлена, кто за неё отвечает и что на самом деле происходит в браузере посетителя.

Сам WordPress может быть быстрым. Сервер – нормально настроенным. Изображения – оптимизированными. Но после открытия страницы браузер начинает загружать и выполнять код нескольких сторонних компаний.

Сайт принадлежит вам. А весь код, который выполняется на нём, тоже находится под вашим контролем?

По данным Web Almanac 2025, сторонние ресурсы встречаются как минимум на 90% исследованных страниц. Медианное число сторонних запросов составило 83 на десктопе и 79 на мобильных устройствах. Причём крупнейшей отдельной категорией таких запросов стали именно скрипты – 24,8%.

Поэтому сторонний код давно перестал быть мелкой технической деталью. Это отдельная часть инфраструктуры сайта.

Что входит в понятие

Что мы называем сторонними скриптами

Это код, который сайт получает или выполняет для работы внешнего сервиса.

Аналитика и реклама

Google Analytics 4, Google Tag Manager, рекламные пиксели, системы аналитики поведения, рекламные сети.

Интерактивные сервисы

Онлайн-чаты, обратный звонок, карты, видеоплееры, формы внешних сервисов.

Доверие и защита

Виджеты отзывов, антиспам, CAPTCHA и другие внешние компоненты.

Маркетинговые инструменты

Системы A/B-тестирования, персонализации и другие подключаемые решения.

Сам факт наличия стороннего кода не является проблемой.

GA4 может быть нужен для аналитики. Чат – приносить обращения. Карта – помогать клиенту найти офис. Рекламный пиксель – использоваться для действующей кампании.

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

Скрытые зависимости

Один установленный скрипт – не всегда один скрипт

Это один из моментов, которые часто упускают при проверке сайта.

Допустим, в коде страницы мы нашли Google Tag Manager. Можно сделать вывод: «Здесь подключён один сторонний скрипт».

Но контейнер GTM способен запускать другие теги. Те обращаются к другим доменам. Какой-нибудь виджет создаёт iframe. Внутри него выполняется собственный JavaScript. Тот, в свою очередь, обращается ещё к нескольким сервисам.

Страница→Менеджер тегов→Внешний скрипт→iframe→Другой сервис

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

Поэтому мы разделяем две вещи: что установлено на сайте и что реально выполняется в браузере посетителя.
Скрытая цепочка сторонних скриптов: сайт, менеджер тегов, внешние сервисы и серверы

Один подключённый компонент может запустить целую цепочку внешних зависимостей.

Почему исходного кода страницы недостаточно

Предположим, разработчик проверил шаблон WordPress и нашёл семь подключений. Но это ещё не означает, что посетитель взаимодействует только с семью внешними ресурсами.

Часть компонентов появляется после выполнения другого JavaScript, согласия на cookie, прокрутки страницы, нажатия кнопки, открытия формы, запуска видео, только для определённого устройства, страны или при выполнении заданного условия в GTM.

Поэтому нормальная инвентаризация стороннего кода должна отвечать не только на вопрос «Что написано в HTML?». Нужен второй: «Что произошло после того, как браузер выполнил этот HTML?»

Именно там часто обнаруживается настоящий технический долг.

Цена интеграции

У каждого стороннего скрипта есть цена

Причём мы не сводим её к скорости загрузки. У внешнего компонента как минимум четыре вида стоимости.

1

Производительность

Загрузка, разбор и выполнение JavaScript, запросы к серверам и изменение страницы.

2

Данные

Какие сведения о странице, событиях, устройстве и посетителе получает внешний сервис.

3

Надёжность

Что произойдёт с сайтом, если чат, карта, виджет или внешний сервер перестанут отвечать.

4

Безопасность

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

Четыре цены стороннего кода: производительность, данные, надёжность и безопасность

1. Производительность

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

Особенно неприятна ситуация, когда страница визуально уже загрузилась, но основной поток браузера занят выполнением JavaScript. Человек видит кнопку. Нажимает её. А сайт реагирует с задержкой.

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

2. Данные

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

Для аналитики это часто и является целью.

Но вопрос должен звучать не «Это известный сервис?», а «Какие именно данные мы разрешили ему получать и зачем?»

3. Надёжность

Сайт может работать исправно, а сторонний сервис – нет. Например: чат завис → карта не отвечает → виджет выдаёт ошибку → внешний сервер медленно отдаёт JavaScript.

Чем больше внешних зависимостей, тем больше частей сайта находятся за пределами собственного сервера.

4. Безопасность

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

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

Именно поэтому вопрос «доверяем ли мы этому сервису?» недостаточен. Есть ещё один: «Контролируем ли мы то, что он делает на сайте сегодня?»
Контроль изменений

Самая опасная ошибка – считать сторонний код неизменным

Допустим, виджет проверили в момент установки. Он работал нормально. Прошло полгода. Поставщик обновил JavaScript.

Сам сайт при этом никто не менял. Но код, выполняющийся у посетителя, уже другой.

Это фундаментальное отличие внешнего JavaScript от кода, который хранится и выпускается вместе с сайтом.

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

Для владельца бизнеса здесь важен не конкретный сценарий атаки. Важен принцип:

То, что сайт визуально работает, ещё не означает, что в браузере посетителя происходит только то, что предусмотрено владельцем сайта.

Менеджер тегов – это инструмент, а не склад забытых пикселей

Google Tag Manager удобен именно тем, что позволяет централизованно управлять тегами. Но удобство создаёт другую проблему.

Добавить новый тег гораздо проще, чем потом вспомнить, зачем он был добавлен.

Например: в январе запускается рекламная кампания; для неё ставится пиксель; кампания заканчивается в марте; в октябре пиксель продолжает загружаться; через два года никто уже не знает, кому он принадлежит.

Так появляется технический долг без единой «ошибки».

Все когда-то принимали разумные решения. Просто у решений не было срока пересмотра.

Поэтому для временных интеграций мы считаем обязательными три вещи: кто установил → зачем → когда пересмотреть необходимость.

Если у временного скрипта нет даты пересмотра, у него очень хорошие шансы стать постоянным.

Практическая методика VozniNet

Паспорт стороннего скрипта

Для сайтов, на которых накопилось много интеграций, мы предлагаем не начинать с удаления. Сначала составляется реестр.

Паспорт стороннего скрипта: назначение, владелец, страницы, данные, нагрузка и срок пересмотра
Что проверяем Что нужно знать
Сервис Что это
Назначение Какую задачу решает
Ответственный Кто понимает, зачем он нужен
Источник Где установлен
Страницы Где должен работать
Запуск Когда начинает загружаться
Зависимости Что загружает дальше
Данные Что получает
Передача Куда отправляет данные
Производительность Как влияет на страницу
Отказ Что произойдёт, если сервис недоступен
Дата установки Когда появился
Последняя проверка Когда проверяли
Срок пересмотра Когда снова оценивать необходимость
Решение Что делаем дальше

Главная строка здесь даже не «производительность». Это ответственный.

Если никто не может объяснить, зачем конкретный тег работает на сайте, это уже основание для проверки.

Не обязательно для немедленного удаления. Но для проверки – точно.

После инвентаризации

Семь решений вместо «оставить или удалить»

После инвентаризации необязательно делить всё на полезное и бесполезное. Мы используем семь вариантов.

1ОставитьКомпонент нужен бизнесу, работает там, где требуется, и его техническая стоимость оправдана. Например, корректно настроенная аналитика.
2ОграничитьСкрипт нужен, но не на каждой странице. Если карта используется только на странице контактов, возникает закономерный вопрос, зачем загружать её инфраструктуру в блоге. То же касается некоторых чатов, форм, виджетов отзывов и рекламных инструментов.
3ОтложитьКомпонент нужен, но не в первые секунды загрузки. Его можно запускать позже – после основного содержимого, согласия пользователя или другого события.
4Использовать лёгкую заглушкуХороший пример – видео или карта. Вместо немедленной загрузки полноценного внешнего компонента пользователь сначала видит лёгкое изображение или элемент интерфейса. Настоящий виджет появляется после взаимодействия.
5Перенести часть обработки на серверДля некоторых аналитических задач это позволяет уменьшить объём работы в браузере и лучше контролировать поток данных. Но перенос на сервер сам по себе не делает интеграцию полезной или правильно настроенной.
6ЗаменитьБизнес-функция нужна, но конкретное решение слишком тяжёлое, нестабильное или избыточное. Тогда меняем не функцию, а инструмент.
7УдалитьНет действующей задачи, ответственного и понятной пользы. В этом случае поддерживать интеграцию только потому, что «она давно здесь стоит», смысла нет.
Семь решений для сторонних скриптов: оставить, ограничить, отложить, облегчить, перенести, заменить или удалить

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

Важно: ненужный тег остаётся ненужным, даже если его архитектура стала сложнее.
Измеряем, а не считаем

Почему нельзя оценивать проблему количеством скриптов

Можно было бы установить правило: «На странице должно быть не больше пяти сторонних скриптов».

Но технического смысла в такой цифре мало.

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

Поэтому мы оцениваем не количество логотипов сервисов, а стоимость функции.

До установки нового компонента желательно иметь состояние страницы до. После установки – измерить после.

  • число дополнительных запросов;
  • объём переданных данных;
  • работу процессора;
  • длинные задачи;
  • LCP;
  • INP;
  • CLS;
  • поведение на мобильных устройствах;
  • работу форм и кнопок.

Получается технический бюджет.

Если новый чат приносит обращения, его стоимость может быть оправданна.

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

Скрипт может не тормозить загрузку – и всё равно мешать пользователю

Это особенно важно для INP.

Представим: страница уже появилась; посетитель начал читать; в этот момент запускается тяжёлый сторонний JavaScript; посетитель нажимает меню или кнопку; браузер сначала заканчивает предыдущую работу; только затем обрабатывает действие.

На графике загрузки всё может выглядеть терпимо. Для человека сайт «задумался».

Поэтому проверять сторонний код только по времени первоначальной загрузки недостаточно.

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

Это особенно важно на формах → корзине → оформлении заказа → фильтрах → мобильном меню → калькуляторах → интерактивных элементах.

Именно там задержка превращается из технической характеристики в потерянное действие.

Если нужно проверить не только внешние интеграции, но и всю техническую часть проекта, см. техническую SEO-оптимизацию сайта.

Данные и согласие

Cookie-баннер ещё не означает, что всё настроено правильно

На сайте появляется окно: «Мы используем файлы cookie». Пользователь выбирает вариант.

Но дальше возникает технический вопрос: какие скрипты уже успели запуститься до этого выбора?

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

Открыли сайт→Ничего не выбрали→Проверили запросы→Отказались→Проверили снова→Согласились

Само наличие красивого баннера ничего не доказывает.

На VozniNet настройка cookie-согласия, GA4 и GTM вынесена в отдельный практический материал, поэтому здесь важен только общий принцип:

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

Настройка cookie-согласия, GA4 и GTM →

Что именно сторонний код получает от страницы

Этот вопрос редко задают при установке.

Обычно схема такая: «Скопируйте этот код и вставьте перед </head>».

Но технически нас должно интересовать другое.

  1. читает ли скрипт адрес страницы;
  2. получает ли параметры URL;
  3. работает ли с cookie;
  4. использует ли локальное хранилище браузера;
  5. видит ли события формы;
  6. получает ли содержимое слоя данных;
  7. какие внешние домены вызываются;
  8. какие данные уходят в запросах.

Для аналитической системы передача определённых событий закономерна.

Но если внешний сервис получает информацию, которая ему для заявленной функции не нужна, возникает вопрос о конфигурации.

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

Почему платёжные страницы особенно показательны

В платёжной индустрии проблема стороннего JavaScript уже настолько серьёзна, что PCI DSS формализует контроль скриптов на платёжных страницах.

Там требуется, в частности, понимать, какие скрипты разрешены, зачем они необходимы и не были ли они неожиданно изменены.

Это не означает, что требования PCI DSS автоматически распространяются на любой корпоративный сайт.

Но сам принцип полезен значительно шире:

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

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

Защита – это не один плагин

Когда речь заходит о стороннем JavaScript, иногда ищут одну настройку, которая решит проблему.

Так не работает.

В зависимости от архитектуры применяются разные механизмы.

CSP помогает определить, каким источникам браузеру вообще разрешено загружать и выполнять определённые ресурсы.

SRI позволяет проверить целостность конкретного внешнего файла по криптографическому отпечатку.

sandbox для iframe ограничивает возможности встроенного содержимого.

Контроль изменений позволяет заметить, что фактически выполняемый код изменился.

Но в обычной работе мы начинаем не с CSP.

Мы начинаем с более простого вопроса:

А мы вообще знаем все внешние компоненты, которые сейчас работают?

Защищать неизвестный список зависимостей значительно сложнее, чем сначала привести его в порядок.

Практическая проверка

Как мы проверяем сторонний код сайта

Для первичной проверки необязательно сразу проводить большой технический аудит.

Мы идём последовательно.

  1. Составляем известный список. Проверяем WordPress → плагины → тему → вставки кода → GTM → рекламные кабинеты → сервисы аналитики. Записываем всё, что ожидаем увидеть.
  2. Открываем сайт как обычный посетитель. Не ограничиваемся административной частью. Нас интересует реальный браузер.
  3. Проверяем внешние запросы. Смотрим, к каким доменам обращается страница. Здесь часто появляется то, чего не было в первоначальном списке.
  4. Строим цепочки. Нужно понять не только «Загружается example.com», а кто инициировал этот запрос: страница, GTM, другой внешний скрипт или iframe.
  5. Повторяем проверку после взаимодействия. Открываем меню, прокручиваем страницу, запускаем видео, открываем чат, заполняем форму, принимаем или отклоняем cookie. Некоторые компоненты появятся только сейчас.
  6. Проверяем производительность. Ищем длинные задачи и смотрим, какой код занимал основной поток браузера. Особое внимание – моментам реального взаимодействия.
  7. Проверяем мобильную версию. На мощном рабочем компьютере проблема может почти не ощущаться. На смартфоне результат бывает другим.
  8. Сверяем техническую стоимость с бизнес-пользой. Чатом пользуются? Пиксель относится к действующей рекламе? Виджет нужен? События аналитики кто-то анализирует? Сервис вообще ещё оплачен и используется?

И только после этого принимаем решение.

Для общей проверки перед запуском или после серьёзных изменений можно использовать наш чек-лист проверки сайта.

PageSpeed не даст полного ответа

PageSpeed Insights полезен.

Но невозможно проверить всю систему стороннего кода одной цифрой.

Он не ответит: кто владелец пикселя; зачем нужен старый тег; какие данные должен получать чат; кто сможет отключить проблемный виджет; что загрузится только после открытия формы; что изменил поставщик вчера; нужна ли бизнесу эта интеграция вообще.

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

И наоборот – наличие внешних скриптов само по себе не означает плохой сайт.

Нужен управляемый состав.

Отказоустойчивость

У каждого важного скрипта должен быть аварийный выключатель

Представим, что сегодня утром внешний виджет:

  1. начал перекрывать кнопку заказа;
  2. вызывает ошибки;
  3. перестал отвечать;
  4. создаёт десятки лишних запросов;
  5. нарушает работу формы.

Возникают очень практические вопросы.

  • Кто может его отключить?
  • Где он установлен?
  • Есть ли доступ к GTM?
  • Нужно ли ждать разработчика?
  • Можно ли отключить компонент, не ломая остальные?
  • Есть ли предыдущая версия контейнера?

Если ответы неизвестны, проблема уже организационная.

Для важных внешних интеграций мы считаем полезным заранее понимать путь аварийного отключения. Не после аварии. До неё.

Сторонний скрипт должен иметь срок пересмотра

Есть ещё одно простое правило, которое предотвращает накопление мусора.

При установке временного инструмента сразу определяем: зачем установили → кто отвечает → когда пересмотреть.

Например: рекламный пиксель – кампания до 30 ноября – пересмотр 5 декабря.

Или: виджет обратного звонка – тестируем три месяца – после теста сравниваем обращения.

Так техническая интеграция получает жизненный цикл.

Без этого сайт постепенно превращается в архив всех маркетинговых экспериментов за последние пять лет.

До установки

Что проверять перед установкой нового виджета

Мы бы не начинали с вопроса: «Как его вставить?»

Сначала девять вопросов.

  1. Какую бизнес-задачу он решает?
  2. Кто отвечает за результат?
  3. На каких страницах он действительно нужен?
  4. Нужно ли загружать его сразу?
  5. Какие данные он получает?
  6. Какие дополнительные ресурсы загружает?
  7. Как изменяется производительность страницы?
  8. Что произойдёт при недоступности поставщика?
  9. Как быстро мы сможем его отключить?

Если на эти вопросы есть ответы, интеграция становится управляемой.

Когда сторонний код уже превратился в технический долг

Есть несколько характерных признаков.

  • Никто не знает, зачем установлен тег.
  • Нет человека, отвечающего за сервис.
  • В GTM десятки старых тегов и триггеров.
  • Один и тот же инструмент подключён несколькими способами.
  • Скрипт работает на всём сайте, хотя нужен на одной странице.
  • После отказа от cookie продолжают появляться неожиданные запросы.
  • Маркетинговая кампания закончилась, а её код остался.
  • При отключении никто не знает, что сломается.
  • Сторонний сервис существенно изменяет производительность, но его польза не измеряется.
  • Поставщик давно сменился, а старый код всё ещё присутствует.

По отдельности это мелочи.

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

Без крайностей

Не нужно удалять всё стороннее

После такого разбора легко прийти к другой крайности: «Лучший сторонний скрипт – удалённый скрипт».

Нет.

Сторонние сервисы дают сайту функции, которые было бы дорого или бессмысленно разрабатывать самостоятельно.

Задача не в стерильности.

Задача в том, чтобы для каждого внешнего компонента можно было быстро ответить:

  • зачем он нужен;
  • кто за него отвечает;
  • где он работает;
  • что он делает;
  • сколько стоит сайту;
  • какие данные получает;
  • что произойдёт без него;
  • как его отключить.
Если ответы есть – это инфраструктура. Если ответов нет – это технический долг.

Сайт нужно проектировать с учётом будущих интеграций

Лучший момент для наведения порядка – не тогда, когда на сайте уже накопилось 30 неизвестных компонентов.

Если сайт создаётся или серьёзно переделывается, правила стороннего кода лучше определить сразу.

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

Тогда новый чат или пиксель становится управляемым изменением, а не ещё одной строчкой, происхождение которой через год никто не вспомнит.

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

Быстрая самопроверка

Короткая проверка своего сайта

Если хочется быстро понять масштаб проблемы, можно начать с пяти вопросов:

  1. Сколько сторонних доменов вызывается при обычном открытии страницы?
  2. Можем ли мы объяснить назначение каждого?
  3. Знаем ли, какой код загрузил каждый из них?
  4. Есть ли у каждого бизнес-владелец или ответственная задача?
  5. Можем ли мы безопасно отключить любой необязательный компонент?

Если уже на втором вопросе появляется: «Вот этот домен знакомый, но откуда он взялся – непонятно», инвентаризация точно не будет лишней.

Вывод

Главное

Технический долг сторонних скриптов редко появляется в один день.

Он накапливается постепенно.

Сегодня добавили аналитику.

Через месяц – пиксель.

Потом чат.

Потом новый рекламный кабинет.

Потом другой подрядчик поставил ещё один тег.

Каждая отдельная операция выглядит безобидно.

Через несколько лет браузер посетителя выполняет систему, которую никто целиком уже не проектировал.

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

Тогда чат остаётся чатом, аналитика – аналитикой, а менеджер тегов – инструментом управления.

А не складом цифровых решений, которые когда-то кому-то понадобились.

FAQ

Частые вопросы

Нужно ли удалять сторонние скрипты ради скорости сайта?

Не автоматически. Сначала нужно определить назначение и фактическую стоимость каждого компонента. Полезный сервис может оправдывать дополнительную нагрузку. Ненужный скрипт не оправдывает её даже при небольшом влиянии.

Google Tag Manager сам по себе является проблемой?

Нет. Это инструмент управления тегами. Проблема возникает, когда контейнер превращается в неконтролируемое хранилище старых тегов, пользовательского кода и интеграций без ответственных и срока пересмотра.

async и defer решают проблему сторонних скриптов?

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

Можно ли увидеть все сторонние скрипты через PageSpeed Insights?

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

Что проверять в первую очередь?

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

Нужно ли переносить аналитику на сервер?

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

Как часто проводить ревизию стороннего кода?

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

Следующий шаг

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

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

Техническая SEO-оптимизация →