Налаштування Time to Interactive (TTI) моніторингу для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування Time to Interactive (TTI) моніторингу для сайту
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Настройка Time to Interactive (TTI) мониторингу для сайту

Time to Interactive — момент, коли сторінка не просто виглядає завантаженою, а дійсно готова реагувати на користувацький ввід. Різниця між "сторінка виглядає готовою" та "сторінка готова" може складати 5–15 секунд на повільних пристроях. Саме ця різниця пояснює високий показатель відказів на мобільних при хороших показниках FCP.

Як обчислюється TTI

TTI — момент, після якого протягом 5 секунд немає Long Tasks (задач довше 50 мс в main thread) та мережа спокійна (не більше 2 активних запитів). Lighthouse шукає останню Long Task у цьому тихому вікні та бере її кінець як TTI.

Шкала Lighthouse:

  • 0–3,8 с — добре
  • 3,8–7,3 с — потребує поліпшення
  • 7,3 с — погано

Для мобільних пристроїв з CPU throttling 4x — умножайте свої десктопні результати приблизно на 3.

Інструменти мониторингу

Chrome User Experience Report (CrUX) — реальні дані від користувачів Chrome. TTI не публікується прямо (через складність вимірювання), але корелює з TBT та INP, які є.

Lighthouse CI — лабораторні вимірювання при кожному деплої. Стабільні, відтворювальні, ловлять регресії.

WebPageTest — детальний filmstrip + waterfall. Видно точно, який скрипт тримає main thread.

Treo / SpeedCurve — комерційні платформи з історією та алертами.

Lighthouse CI з порогами TTI

npm install --save-dev @lhci/cli

.lighthouserc.json:

{
  "ci": {
    "collect": {
      "url": [
        "https://staging.example.com/",
        "https://staging.example.com/product/example-product"
      ],
      "numberOfRuns": 5,
      "settings": {
        "formFactor": "mobile",
        "screenEmulation": {
          "mobile": true,
          "width": 390,
          "height": 844,
          "deviceScaleFactor": 3
        },
        "throttlingMethod": "simulate",
        "throttling": {
          "rttMs": 150,
          "throughputKbps": 1638.4,
          "cpuSlowdownMultiplier": 4
        }
      }
    },
    "assert": {
      "preset": "lighthouse:recommended",
      "assertions": {
        "interactive": ["error", { "maxNumericValue": 7300 }],
        "total-blocking-time": ["error", { "maxNumericValue": 300 }]
      }
    },
    "upload": {
      "target": "lhci",
      "serverBaseUrl": "https://lhci.example.com",
      "token": "$LHCI_TOKEN"
    }
  }
}

Параметри throttling імітують Moto G4 на 3G — стандартний Lighthouse mobile-профіль.

Збір TTI через Performance Observer у браузері

TTI неможливо точно вимірити через PerformanceObserver напрямки — API для цього немає. Використовуємо полісфіл від Google:

npm install tti-polyfill
import ttiPolyfill from 'tti-polyfill';

ttiPolyfill.getFirstConsistentlyInteractive().then((tti) => {
  // Відправляємо в аналітику
  if (typeof gtag !== 'undefined') {
    gtag('event', 'performance', {
      event_category: 'Web Vitals',
      event_label: 'TTI',
      value: Math.round(tti),
      non_interaction: true,
    });
  }

  // Або в свій бекенд
  fetch('/api/metrics', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      metric: 'tti',
      value: tti,
      url: window.location.href,
      userAgent: navigator.userAgent,
      timestamp: Date.now(),
    }),
    keepalive: true,
  });
});

Полісфіл не ідеальний — апроксимує TTI через Long Task API та Network Information API. Але для трендового мониторингу достатньо.

Зберігання та візуалізація метрик

Мінімальна схема таблиці в PostgreSQL для зберігання field data:

CREATE TABLE performance_metrics (
  id          BIGSERIAL PRIMARY KEY,
  url         TEXT NOT NULL,
  metric      VARCHAR(50) NOT NULL,
  value       FLOAT NOT NULL,
  connection  VARCHAR(20),
  device      VARCHAR(20),
  country     VARCHAR(2),
  recorded_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX ON performance_metrics (metric, recorded_at);
CREATE INDEX ON performance_metrics (url, metric);

Запит для перцентилів:

SELECT
  url,
  percentile_cont(0.75) WITHIN GROUP (ORDER BY value) AS p75,
  percentile_cont(0.95) WITHIN GROUP (ORDER BY value) AS p95,
  COUNT(*) AS sample_count
FROM performance_metrics
WHERE metric = 'tti'
  AND recorded_at > NOW() - INTERVAL '7 days'
  AND device = 'mobile'
GROUP BY url
ORDER BY p75 DESC;

Зв'язок TTI з реальним бізнесом

Google опублікував дослідження: збільшення TTI на 1 секунду знижує конверсію мобільних користувачів на 7–12% залежно від тематики. Для e-commerce з 1 000 мобільних візитів на день та середнім чеком $50 — це $350–600 в день потенційних втрат при кожній лишній секунді TTI.

Саме тому мониторинг TTI потрібно настраювати не тільки як технічний, але й як бізнес-метрику — з прив'язкою до сегментів трафіку та конверсійних воронок.

Терміни

Настройка Lighthouse CI з TTI-порогами — 1 робочий день. Збір field data через Performance Observer + зберігання в PostgreSQL + Grafana-дашборд — 3–5 робочих днів. Повна система з алертами, сегментацією по пристроям та країнам, інтеграцією з аналітикою — 1–2 тижні.