Мониторинг скорости с помощью PageSpeed Insights API
Скорость загрузки страниц напрямую влияет на конверсию и SEO. Отслеживать её вручную — задача не для инженера: после каждого деплоя бегать за Lighthouse — терять время. Без автоматизации вы рискуете пропустить деградацию, что бьёт по позициям. Мы предлагаем автоматизировать мониторинг Core Web Vitals с помощью PageSpeed Insights API (согласно официальной документации). Это бесплатный сервис, который возвращает два типа данных: лабораторные (Lighthouse) и полевые (Chrome UX Report). Первые реагируют мгновенно, вторые — за 28 дней накопления. Вместе они дают полную картину.
Как работает мониторинг
PSI API бесплатен: до 25 000 запросов в день с ключом. Ключ создаётся в Google Cloud Console. Мы подготавливаем скрипт на Python, который собирает метрики для приоритетных страниц (главная, категории, карточки товаров, корзина) и сохраняет их в PostgreSQL. Скрипт запускается по расписанию (например, каждые 24 часа через cron) и автоматически обрабатывает до сотни URL за один прогон.
import requests from typing import Literal PSI_API_URL = 'https://www.googleapis.com/pagespeedonline/v5/runPagespeed' def fetch_psi(url, api_key, strategy): params = { 'url': url, 'key': api_key, 'strategy': strategy, 'category': ['performance'], } resp = requests.get(PSI_API_URL, params=params, timeout=60) resp.raise_for_status() return resp.json() def extract_metrics(response): field = response.get('loadingExperience', {}) lab = response.get('lighthouseResult', {}) # извлечение полевых и лабораторных метрик return {'field': field, 'lab': lab} Какие метрики отслеживаем
| Метрика | Лабораторные | Полевые (CrUX) |
|---|---|---|
| LCP | largest-contentful-paint | LARGEST_CONTENTFUL_PAINT_MS |
| INP | interaction-to-next-paint | INTERACTION_TO_NEXT_PAINT |
| CLS | cumulative-layout-shift | CUMULATIVE_LAYOUT_SHIFT_SCORE |
| FCP | first-contentful-paint | FIRST_CONTENTFUL_PAINT_MS |
| TTFB | server-response-time | EXPERIMENTAL_TIME_TO_FIRST_BYTE |
Мы также фиксируем Performance score из Lighthouse. Для каждого URL сохраняем историю — можно сравнить сегодняшний замер с вчерашним и выявить тренды.
Как настроить алерты при падении Core Web Vitals?
Определяем пороговые значения. Например, если LCP превышает 4 секунды или Performance score падает ниже 70 — отправляем уведомление в Telegram или email. Пороги настраиваются индивидуально: для интернет-магазина они жёстче, для блога — мягче.
THRESHOLDS = { 'lab_performance_score': 0.7, 'lab_lcp_ms': 4000, 'field_lcp_category': 'SLOW', } def check_alerts(current, thresholds): alerts = [] if current['lab']['performance_score'] < thresholds['lab_performance_score']: alerts.append(f"Performance score упал до {current['lab']['performance_score']*100}%") # остальные проверки return alerts Сравниваем с предыдущим замером: если метрика ухудшилась больше чем на 10% — тоже алерт. Это позволяет ловить деградацию даже в пределах «зелёной» зоны. Для отклонений в 5–15% (типичный разброс PSI) используем медиану трёх запусков.
Сравнение PSI API с локальным Lighthouse
| Параметр | PSI API | Локальный Lighthouse |
|---|---|---|
| Стоимость | Бесплатно (до 25 000 запросов/день) | Бесплатно, но требует сервера |
| Скорость запуска | ~30–60 секунд на URL | Зависит от железа |
| Данные | Лабораторные + полевые (CrUX) | Только лабораторные |
| Ограничения | Нет авторизации, вариабельность 5–15% | Полный контроль, но нет полевых |
PSI API в 10 раз дешевле коммерческих сервисов (например, SpeedCurve от $100/мес) и при этом даёт полевые метрики, недоступные локальному Lighthouse. Экономия бюджета может достигать $2000 в год при переходе на PSI.
Что входит в работу
- Получение и настройка API-ключа
- Скрипт сбора метрик для N страниц (вы определяете список)
- База данных для хранения истории (PostgreSQL)
- Уведомления о деградации (Telegram, email, Slack — на выбор)
- Дашборд Grafana для визуализации трендов
- Интеграция в CI/CD: автоматический прогон перед каждым деплоем
- Документация и обучение вашей команды
Почему важен мониторинг обоих типов данных?
Лабораторные данные реагируют мгновенно — вы видите эффект каждой правки кода. Полевые данные запаздывают на 28 дней, но показывают реальную картину. Только вместе они дают полную информацию. Например, вы улучшили LCP на тестовом окружении, а в поле он всё ещё плох — значит, проблема в другом (например, медленный сервер или тяжёлый JavaScript).
Ограничения PSI API
API запускает Lighthouse на своих серверах, результаты варьируются на 5–15%. Мы запускаем три замера и берём медиану. Для авторизованных страниц (личный кабинет) используем локальный Lighthouse через Node.js. Полевые данные требуют достаточного трафика — минимум несколько сотен визитов в месяц на страницу.
Сроки и стоимость
Первичную интеграцию (сбор + алерты) делаем за 1–2 рабочих дня. Расширенную версию с Grafana и CI/CD — за 3–4 дня. Стоимость рассчитывается индивидуально — закажите консультацию для предварительной оценки.
Опыт и гарантии
Мы более 5 лет занимаемся веб-производительностью, реализовали 50+ проектов по оптимизации и мониторингу. Гарантируем стабильную работу скриптов и быструю обратную связь.
Технические детали интеграции
Для каждого URL создаётся отдельная запись в таблице metrics с полями: url, timestamp, lab_performance_score, field_lcp_category и т.д. Индексы по url и timestamp ускоряют выборку. Алерты реализованы через простой polling-скрипт, который раз в минуту проверяет свежие данные. Для CI/CD используется GitHub Actions: перед деплоем запускается тест с порогом, и если метрики хуже baseline — пайплайн фейлится.
Закажите настройку мониторинга, и мы подготовим решение под ваш стек.







