Моніторинг швидкості за допомогою 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 — пайплайн фейлиться.
Замовте налаштування моніторингу, і ми підготуємо рішення під ваш стек.







