Каждый веб-разработчик сталкивался с ситуацией, когда после оптимизации бандлов сайт всё равно грузится медленно. Вы открываете DevTools Performance Monitor, видите всплески активности JavaScript, но в списке ресурсов не находите ничего подозрительного. Эти «фантомные килобайты» — невидимые части кода, которые браузер исполняет, но которые не попадают в стандартные отчёты. В этой статье мы рассмотрим, как современные нейросети позволяют реконструировать эти скрытые JS-бандлы по косвенным следам в Performance Monitor, что даёт возможность найти и устранить узкие места производительности.
Современные сайты собираются из сотен модулей, и сборщики типа Webpack или Rollup часто создают множество мелких бандлов, динамически подгружаемых по мере необходимости. Однако не весь код выполняется явно: некоторые части могут быть инлайнированы, другие — генерироваться в рантайме, третьи — подгружаться через динамические импорты, которые не всегда видны в сетевой вкладке. Performance Monitor показывает только метрики: FPS, CPU, память, но не даёт информации о том, какие функции выполняются. В результате разработчик видит, что CPU загружен на 90%, но не может понять, какой именно код вызывает нагрузку.
Эти скрытые килобайты могут возникать из-за:
В результате размер фактически исполняемого кода может быть на 20-30% больше, чем суммарный размер всех загруженных файлов. Это приводит к увеличению времени загрузки, снижению FPS и повышенному энергопотреблению на мобильных устройствах.
Нейросети, обученные на огромных корпусах JavaScript-кода, способны предсказывать недостающие фрагменты по контексту. В контексте реконструкции фантомных бандлов используется подход, основанный на анализе трассировки стека вызовов и временных меток из Performance Monitor. Собираются данные о том, какие функции вызываются, с какой частотой и в каком порядке. Затем нейросеть сопоставляет эти паттерны с известными структурами кода и генерирует вероятный исходный код.
Процесс можно разбить на этапы:
Ключевая сложность — восстановить не просто синтаксис, а логику. Поэтому модели часто обучаются на парах «трассировка-код», созданных специально для этой задачи.
Представьте, что у вас есть интернет-магазин, и вы замечаете, что при добавлении товара в корзину происходит заметная задержка. Performance Monitor показывает пик CPU, но в сетевой вкладке нет новых запросов. Вы записываете профиль и обнаруживаете, что вызывается функция updateCart, которая не определена ни в одном из ваших файлов. Используя нейросеть, вы можете восстановить её код.
Допустим, у вас есть следующий след:
function updateCart() { // неизвестный код
// вызовы: getItemPrice, calculateDiscount, applyPromo
}
Нейросеть, обученная на типовых паттернах, может сгенерировать:
function updateCart() {
const items = cart.getItems();
const total = items.reduce((sum, item) => sum + getItemPrice(item), 0);
const discount = calculateDiscount(total);
return applyPromo(total - discount);
}
Этот код не является точной копией, но он показывает, какие функции и данные участвуют. Затем вы можете найти, откуда этот код был взят — возможно, это устаревшая версия модуля, которая осталась от предыдущей версии сайта.
Для реализации этой методики вам понадобятся:
Пример автоматизации сбора данных с помощью Puppeteer:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.tracing.start({path: 'trace.json', categories: ['devtools.timeline']});
// имитация действий пользователя
await page.click('button.add-to-cart');
await page.waitForTimeout(2000);
await page.tracing.stop();
await browser.close();
})();
После сбора данных вы можете извлечь из трассы все вызовы функций и передать их в нейросеть.
Если вы хотите внедрить этот подход в свой рабочий процесс, следуйте чеклисту:
| Шаг | Действие |
|---|---|
| 1 | Запишите профиль Performance Monitor для ключевых сценариев (загрузка, взаимодействие). |
| 2 | Сравните список исполняемых функций со списком функций из загруженных бандлов. |
| 3 | Выделите функции, которые отсутствуют, и передайте их в нейросетевую модель. |
| 4 | Проанализируйте сгенерированный код и найдите его источник (например, через поиск по кодовой базе). |
| 5 | Устраните причину: либо удалите дублирующий код, либо оптимизируйте динамические импорты. |
| 6 | Проведите повторное профилирование и убедитесь, что фантомные килобайты исчезли. |
Фантомные килобайты — это реальная проблема, которая может оставаться незамеченной годами. Нейросетевая реконструкция JS-бандлов по следам Performance Monitor — это новый подход, который позволяет заглянуть внутрь исполняемого кода и найти скрытые зависимости. Хотя технология ещё молода, она уже демонстрирует впечатляющие результаты в области оптимизации производительности. Используйте описанные методы, чтобы ваш сайт работал быстрее и эффективнее.







