# Аудит производительности и загрузки

Дата проверки: 28 июня 2026
Инструмент: Lighthouse
Профили: mobile и desktop
Количество прогонов: 3 на mobile, 3 на desktop

## Средние результаты

| Профиль | Performance | Accessibility | Best Practices | SEO | FCP | LCP | Speed Index | TBT | CLS | TTI |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| Mobile | 55.7 | 89 | 73 | 100 | 4.11 s | 6.10 s | 5.80 s | 469 ms | 0.068 | 8.86 s |
| Desktop | 62.7 | 85 | 73 | 100 | 2.18 s | 3.14 s | 3.03 s | 138 ms | 0.027 | 3.20 s |

## Что важно в этих цифрах

- Мобильная производительность нестабильна: score плавал от `40` до `71`.
- Desktop стабильнее, но тоже не дотягивает до комфортного уровня для коммерческой страницы.
- Основной удар идет по mobile LCP и TTI: пользователь долго ждет визуальной стабилизации и интерактивности.
- Высокая разбежка по TBT на mobile указывает на тяжелые и нестабильные сторонние скрипты.

## Вес страницы и сеть

Один из замеров mobile показал:

- общий размер ресурсов: `2,053 KiB`
- число запросов: `63`
- сторонние запросы: `33`
- сторонний трафик: `1,599 KiB`
- скрипты: `405 KiB`
- шрифты: `269 KiB`

Крупнейшие ресурсы по вкладу:

- несколько XHR/Document запросов Cloudflare Challenge и Turnstile
- `gtag.js`
- `mc.yandex.ru/metrika/tag.js`
- локальный шрифт `Gilroy-Regular.ttf`
- hero image `fon.png.webp`

## Главные причины просадки

### 1. Cloudflare Turnstile и challenge-платформа съедают слишком много

По логам Lighthouse:

- на странице инициализируются 3 Turnstile-виджета
- в консоль летит повторяющаяся ошибка `TurnstileError 600010`
- challenge- и turnstile-запросы попадают в список самых тяжелых ресурсов

Почему это важно:

- растет число запросов и общий вес страницы
- mobile score становится очень нестабильным
- увеличивается TBT и TTI
- ухудшается опыт пользователя на первом экране

### 2. Много неиспользуемого фронтенд-кода

Повторяющиеся Lighthouse-рекомендации во всех 6 прогонах:

- `unused-javascript`: экономия около `130 KiB`
- `unused-css-rules`: экономия около `33-34 KiB`

Это хороший кандидат на быстрый выигрыш без переделки дизайна.

### 3. Главная слишком зависит от third-party

Основная нагрузка идет не только от вашего контента, а от внешних систем:

- Cloudflare
- Google Analytics / Tag Manager
- Yandex Metrika
- внешние шрифты

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

### 4. Шрифты грузятся тяжело

Обнаружено:

- локальный `Gilroy-Regular.ttf` весом около `145 KiB`
- дополнительные webfont-запросы к `fonts.gstatic.com`

Что делать:

- перевести локальные TTF в WOFF2
- сократить число начертаний
- preload только действительно критичных файлов

### 5. Изображения можно грузить умнее

На главной:

- 60 изображений
- 0 изображений с `loading="lazy"` в DOM на момент проверки

Даже если часть изображений не очень тяжелая, длинная страница выигрывает от lazy loading почти всегда.

## Лучший план оптимизации

### P0

- Убрать инициализацию Turnstile со всех форм сразу.
- Оставить защиту только там, где она реально нужна.
- Ленивая инициализация: подключать Turnstile только после фокуса на форму или открытия модального окна.
- Проверить, не дублируется ли challenge-логика между формами.

### P1

- Разобрать фронтенд-бандл и отключить JS/CSS, которые не нужны на главной.
- Отложить не критичные third-party теги до `load` или после первого взаимодействия.
- Перевести `Gilroy-Regular.ttf` в WOFF2 и уменьшить число шрифтовых файлов.
- Добавить `loading="lazy"` для изображений ниже первого экрана.

### P2

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

## Что даст самый быстрый эффект

Если делать только три вещи, я бы начал так:

1. Turnstile только по требованию, а не на трех формах сразу.
2. Удаление или отложенная загрузка лишнего JS.
3. Lazy loading изображений плюс оптимизация шрифтов.

## Файлы с исходными замерами

- `assets/tft-lh-mobile.json`
- `assets/tft-lh-mobile-2.json`
- `assets/tft-lh-mobile-3.json`
- `assets/tft-lh-desktop.json`
- `assets/tft-lh-desktop-2.json`
- `assets/tft-lh-desktop-3.json`
