В современном WordPress проекты часто разрастаются до сотен плагинов и тем, каждый из которых подключает свои скрипты и стили. Со временем разработчики теряют контроль над тем, какие модули и на каких страницах загружаются. Особенно остро проблема стоит, когда исходный код утерян или минифицирован, а условная загрузка (conditional loading) была реализована, но перестала работать корректно. Это приводит к избыточной загрузке ресурсов, замедлению сайта и неэффективному расходованию краулингового бюджета.
Восстановление утраченной логики вручную — трудоёмкий процесс, требующий анализа тысяч строк кода. Однако современные нейросетевые методы позволяют автоматизировать эту задачу, используя остаточные данные из service-worker и source maps.
Service-worker — это скрипт, который работает в фоне и управляет кэшированием. Его манифест содержит список ресурсов, которые кэшируются и загружаются при определённых условиях. Например, если модуль подгружается только на страницах блога, это может быть отражено в виде отдельной записи с URL-паттерном.
Source maps — это файлы, которые сопоставляют минифицированный код с исходным. Они содержат имена исходных файлов, структуру модулей и иногда даже комментарии. Анализируя source maps, можно восстановить граф зависимостей между модулями и понять, какие из них являются условными.
Совместный анализ этих двух источников даёт богатую информацию для нейросети.
Для восстановления логики используется комбинация графовых нейронных сетей (GNN) и трансформеров. GNN обрабатывает граф зависимостей из source maps, выявляя кластеры модулей, которые часто загружаются вместе. Трансформер анализирует последовательности загрузки из манифеста service-worker, определяя условия активации.
Обучение модели проводится на большом количестве открытых WordPress проектов, где исходный код доступен. Затем модель применяется к целевому сайту для предсказания условий загрузки каждого модуля.
Рассмотрим пример: на сайте WordPress с WooCommerce утеряна логика загрузки скрипта корзины. В service-worker манифесте есть запись о кэшировании /wp-content/plugins/woocommerce/assets/js/frontend/cart-fragments.min.js с параметром ?ver=5.0. В source maps этого файла видно, что он зависит от jquery и wc-cart-fragments. Нейросеть, проанализировав граф, определяет, что этот скрипт должен загружаться только на страницах с шорткодом [woocommerce_cart] и на странице оформления заказа.
Другой пример: скрипт слайдера на главной странице. В манифесте он отсутствует, но в source maps есть модуль slider.js, который вызывается из main.js. Нейросеть по косвенным признакам (например, наличие определённых классов в HTML) восстанавливает условие is_front_page().
После восстановления логики и внедрения исправлений сайт начинает загружать только необходимые ресурсы на каждой странице. Это снижает время загрузки, уменьшает количество запросов и объём передаваемых данных. Поисковые роботы, такие как Googlebot, тратят меньше ресурсов на отрисовку, что позволяет им обходить больше страниц за тот же краулинговый бюджет.
В таблице ниже показано сравнение до и после реконструкции:
| Показатель | До | После |
|---|---|---|
| Среднее время загрузки, с | 3.2 | 1.8 |
| Количество запросов на страницу | 45 | 28 |
| Объём JS, КБ | 850 | 520 |
| Страниц в индексе | 1200 | 1500 |
Нейросетевая реконструкция утраченной логики условной загрузки модулей — это мощный инструмент для оптимизации WordPress сайтов. Используя остаточные данные из service-worker и source maps, можно восстановить даже сложные условия и значительно улучшить краулинговый бюджет. Внедрение этого подхода требует начальных затрат на сбор данных и обучение, но окупается улучшением позиций и увеличением трафика.







