Próg TTFB
ważność średniamierzonysposób ttfb
Czas do pierwszego bajtu powyżej 3 s przez kilka kolejnych skanów. Sygnał przeciążenia serwera, wycieku pamięci lub ataku.
WIKI
artykuł z 16.09.2026 · źródeł 10Próg TTFB to parametr monitoringu stron internetowych, który mierzy czas do pierwszego bajtu odpowiedzi serwera (ang. Time to First Byte) i porównuje go z ustaloną wartością graniczną w kolejnych pomiarach. Wynik to czas w milisekundach, a przekroczenie progu w serii pomiarów wskazuje na utrwalone spowolnienie, a nie chwilowe zakłócenie. TTFB mierzy czas od rozpoczęcia nawigacji do strony do chwili, w której zaczyna docierać pierwszy bajt odpowiedzi [1].
Jak działa
TTFB jest sumą kilku faz żądania: czasu przekierowań, uruchomienia service workera (jeśli występuje), zapytania DNS, nawiązania połączenia i negocjacji TLS oraz samego żądania aż do nadejścia pierwszego bajtu odpowiedzi [1]. MDN opisuje TTFB jako czas między wysłaniem żądania przez przeglądarkę a otrzymaniem pierwszego bajtu od serwera, obejmujący zapytanie DNS, uzgadnianie TCP i, przy HTTPS, uzgadnianie TLS [2].
Na czas po stronie serwera składa się wszystko, co dzieje się między przyjęciem żądania a wysłaniem początku odpowiedzi: wykonanie aplikacji, zapytania do bazy danych, odczyt z pamięci podręcznej. Nagłówek Server-Timing pozwala zmierzyć takie odrębne procesy zaplecza, na przykład zapytania do bazy danych [6]. Każde przekierowanie dokłada opóźnienie, a łańcuch przekierowań prowadzących do kolejnych przekierowań powiększa je dalej [6].
TTFB poprzedza wszystkie dalsze miary ładowania strony [1]. Nic nie może się wydarzyć po stronie przeglądarki, zanim zaplecze dostarczy pierwszy bajt treści, dlatego skrócenie TTFB poprawia każdą kolejną miarę ładowania [7].
Standardy i specyfikacje
- Navigation Timing Level 2 (W3C, szkic roboczy) definiuje
responseStartjako moment tuż po otrzymaniu przez przeglądarkę pierwszego bajtu odpowiedzi z serwera, pamięci podręcznej HTTP lub zasobów lokalnych [3]. Model przetwarzania ustawia fazy w kolejności: przekierowanie, zapytanie DNS, połączenie, zabezpieczenie połączenia, żądanie, odpowiedź [3]. - PerformanceResourceTiming udostępnia
responseStartw API przeglądarki; różnicaresponseStartirequestStartmierzy czas trwania samego żądania [4]. Dla zasobu z innego źródła bez nagłówkaTiming-Allow-Originwartość wynosi 0 [4]. - Server Timing (W3C) pozwala serwerowi przekazać przeglądarce metryki cyklu żądanie–odpowiedź, np.
Server-Timing: db;dur=53, app;dur=47.2[5]. Dostęp do tych danych jest domyślnie ograniczony regułą tego samego źródła, a serwer decyduje, które metryki ujawnia [5]. - Progi web.dev. web.dev zaleca, by serwer odpowiadał na tyle szybko, żeby 75. percentyl użytkowników mieścił się w dobrym progu FCP; jako orientację podaje TTFB do 0,8 s jako dobry i powyżej 1,8 s jako słaby [1]. TTFB nie należy do Core Web Vitals [1], ale jest pierwszą z czterech składowych LCP; web.dev sugeruje, by odpowiadał za około 40% tego czasu [7].
- 103 Early Hints. Przy odpowiedziach tymczasowych 103 za pierwsze bajty uznaje się właśnie tę odpowiedź [1]. Czas do odpowiedzi końcowej mierzy
finalResponseHeadersStart, tam gdzie jest obsługiwany [2].
Zagrożenia i skutki
Brak pamięci podręcznej stron. Wtyczki cache w WordPressie zapisują wpisy i strony jako pliki statyczne, co zmniejsza obciążenie serwera; dla stron o mało zmiennej treści poprawa może być kilkusetkrotna [8]. Pamięć podręczna obiektów przenosi dane z miejsca drogiego i wolnego w odczycie do taniego i szybkiego [8]. Bez tych mechanizmów każde żądanie wymaga pełnego wygenerowania strony.
Wtyczki, motywy i baza danych. Wydajność WordPressa zależy od liczby i jakości wtyczek oraz od użytego motywu [6]. Zapytania do bazy danych są jednym z procesów zaplecza, które warto mierzyć przy wysokim opóźnieniu [6].
WP-Cron. Zadania WP-Cron uruchamiają się przy wczytaniu strony; dokumentacja WordPressa zaleca przeniesienie ich do systemowego harmonogramu i wyłączenie stałą DISABLE_WP_CRON, bo inaczej WP-Cron nadal działa przy każdym wczytaniu strony i dokłada zużycie zasobów serwera [9].
Hosting. Hosting współdzielony jest zwykle wolniejszy, a aplikacja z niewystarczającą ilością pamięci zaczyna ją intensywnie wymieniać i nie obsługuje stron tak szybko, jak mogłaby [6]. CDN skraca dystans do użytkownika, bo zasoby są przechowywane na serwerach fizycznie bliższych odbiorcom [6].
Pomiar z jednej lokalizacji. Test laboratoryjny wykonuje jedno urządzenie, w jednej sieci, z jednego miejsca, zwykle przy pustej pamięci podręcznej [10]. Dane z pola odzwierciedlają rzeczywiste sieci i lokalizacje użytkowników, a pojedyncza liczba raportowana przez narzędzie jest punktem rozkładu, zwykle 75. percentylem [10]. Jeden odczyt TTFB jest więc próbką; o stanie serwera mówi dopiero seria pomiarów.
Przykłady
| Obserwacja | Co widać w pomiarze | Możliwa przyczyna |
|---|---|---|
| TTFB do 0,8 s | wynik w przedziale dobrym [1] | strona serwowana z pamięci podręcznej [8] |
| TTFB powyżej 1,8 s | wynik w przedziale słabym [1] | generowanie strony bez cache, ciężkie wtyczki [6] [8] |
| Wysoki TTFB, krótki czas serwera w Server-Timing | opóźnienie poza aplikacją | przekierowania, DNS, połączenie, TLS [1] |
Wysoki czas db w Server-Timing | dominuje baza danych [5] [6] | wolne zapytania do bazy [6] |
| Pojedynczy wolny odczyt, kolejne szybkie | jedna próbka z rozkładu [10] | zimna pamięć podręczna, warunki sieci [10] |
| Wolne odczyty w wielu kolejnych pomiarach | spowolnienie utrwalone w serii | przeciążony hosting, brak pamięci [6] |
| Niski TTFB przy 103 Early Hints | liczy się odpowiedź tymczasowa [1] | odpowiedź końcowa może przyjść później [2] |
- [1] Time to First Byte (TTFB) · web.dev (Google)
- [2] Time to first byte — Glossary · MDN Web Docs
- [3] Navigation Timing Level 2 · W3C
- [4] PerformanceResourceTiming: responseStart property · MDN Web Docs
- [5] Server Timing · W3C
- [6] Optimize Time to First Byte · web.dev (Google)
- [7] Optimize Largest Contentful Paint · web.dev (Google)
- [8] Cache — Advanced Administration Handbook · WordPress.org
- [9] Hooking WP-Cron Into the System Task Scheduler — Plugin Handbook · WordPress.org
- [10] Why lab and field data can be different · web.dev (Google)
STATS
wyniki z systemu · tylko liczby zbiorcze- Stron zmierzonych
- 204w ostatnim dniu pomiaru
- OK
- 324odczytów
- Fail
- 0odczytów
- Nie dało się sprawdzić
- 30timeout, blokada, limit zapytań
- Udział fail
- 0,0%bez „nie dało się”
- Stron łącznie
- 206choć jeden odczyt
- OK
- 1811odczytów
- Fail
- 23odczytów
- Nie dało się sprawdzić
- 120timeout, blokada, limit zapytań
- Udział fail
- 1,3%bez „nie dało się”
| Dzień | fail | nie dało się sprawdzić | ok |
|---|---|---|---|
| 23.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 24.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 25.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 26.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 27.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 28.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 29.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 30.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 31.08.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 01.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 02.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 03.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 04.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 05.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 06.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 07.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 08.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 09.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 10.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 11.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 12.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 13.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 14.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 15.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 16.09.2026 | 0 odczytów | 0 odczytów | 0 odczytów |
| 17.09.2026 | 23 odczyty | 1 odczyt | 182 odczyty |
| 18.09.2026 | 0 odczytów | 4 odczyty | 180 odczytów |
| 19.09.2026 | 0 odczytów | 58 odczytów | 572 odczyty |
| 20.09.2026 | 0 odczytów | 27 odczytów | 553 odczyty |
| 21.09.2026 | 0 odczytów | 30 odczytów | 324 odczyty |
- Otwarte teraz
- 19stron: 19 · w okresie łaski: 10
- Nowe w ostatnim dniu
- 120.09.2026
- Otwarte od początku
- 73stron: 56
- Zamknięte
- 44od początku
- Mediana trwania
- 9 h 46 minod wykrycia do zamknięcia
| Ustalenie | Skutek | Otwarte teraz | Łącznie | Zamknięte |
|---|---|---|---|---|
| Czas odpowiedzi (TTFB) ttfb | WARNING | 19 | 73 | 44 |
| Dzień | nowe ustalenia |
|---|---|
| 23.08.2026 | 4 ustalenia |
| 24.08.2026 | 0 ustaleń |
| 25.08.2026 | 1 ustalenie |
| 26.08.2026 | 1 ustalenie |
| 27.08.2026 | 0 ustaleń |
| 28.08.2026 | 0 ustaleń |
| 29.08.2026 | 0 ustaleń |
| 30.08.2026 | 2 ustalenia |
| 31.08.2026 | 1 ustalenie |
| 01.09.2026 | 1 ustalenie |
| 02.09.2026 | 0 ustaleń |
| 03.09.2026 | 0 ustaleń |
| 04.09.2026 | 0 ustaleń |
| 05.09.2026 | 0 ustaleń |
| 06.09.2026 | 0 ustaleń |
| 07.09.2026 | 0 ustaleń |
| 08.09.2026 | 0 ustaleń |
| 09.09.2026 | 9 ustaleń |
| 10.09.2026 | 0 ustaleń |
| 11.09.2026 | 0 ustaleń |
| 12.09.2026 | 0 ustaleń |
| 13.09.2026 | 0 ustaleń |
| 14.09.2026 | 0 ustaleń |
| 15.09.2026 | 0 ustaleń |
| 16.09.2026 | 0 ustaleń |
| 17.09.2026 | 12 ustaleń |
| 18.09.2026 | 3 ustalenia |
| 19.09.2026 | 5 ustaleń |
| 20.09.2026 | 1 ustalenie |
| 21.09.2026 | 0 ustaleń |
- Przebiegów
- 60sposób ttfb
- W 30 dni
- 60przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- 20461 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 16.09.2026| Obszar i ważność | Dostępność · średnia (D08) |
|---|---|
| Workflow i częstotliwość | creato_ping_avail_v2 działa na LAB247cron co 24 h, osobno T1–T4 · Strony w stanie DOWN i WARNING dostają dodatkowy odczyt co 6 h (timer availability_recheck poza n8n). Od 2026-09-16 sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); od 2026-09-17 odczyty trafiają do check_results. |
| Sonda i helper | sposób ttfb · CREATO_PING/helpers/ttfb_check.py |
| Testy |
|
| Typ wyniku | enum: ok / fail / timeout + czas w ms, licznik kolejnych wolnych odczytów, próg |
| Jednostka | ms — w praktyce czas całej odpowiedzi GET razem z przekierowaniami i pobraniem treści, nie czas do pierwszego bajtu |
| Próg i reguła | Czas > 3000 ms zwiększa licznik; licznik ≥ 3 = fail. Brak odpowiedzi w 10 s = timeout od razu, błąd sieci = fail od razu. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/ttfb_check.py → CREATO_PING_TTFB_THRESHOLD_MS (domyślnie 3000)CREATO_PING/helpers/ttfb_check.py → CREATO_PING_TTFB_STREAK (domyślnie 3)CREATO_PING/helpers/ttfb_check.py → _TIMEOUT (10 s, poza config.TIMEOUTS)CREATO_PING/helpers/site_params.py → CRITICAL_CHECK_TYPES (ttfb poza listą) |
| Retencja odczytów | Każdy odczyt w tabeli check_results bazy LAB247; kod LAB247 tej tabeli nie czyści. Polityki retencji nikt jeszcze nie ustalił. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/ttfb_check.py · CREATO_PING/helpers/config.py · CREATO_PING/helpers/site_params.py · CREATO_PING/tools/avail_writer_input.py · LAB247/site/src/lib/ingest/apply.ts · odczyt 16.09.2026 |
Dwa progi po sobie. Helper daje fail dopiero przy 3. kolejnym wolnym odczycie; potem 1. fail = okres łaski (IN PROGRESS, bez alertu), 2. fail z rzędu = ustalenie otwarte z etykietą WARNING — ttfb nie jest sprawdzeniem krytycznym i nie daje DOWN. Przy skanie raz na dobę WARNING pojawia się najwcześniej po 4 kolejnych wolnych dniach; timeout i błąd sieci omijają licznik. Pierwszy odczyt ok zamyka ustalenie.
| Ustalenie | Powaga | Pewność | Skutek | Subtask / alarm | Co zrobić |
|---|---|---|---|---|---|
| Czas odpowiedzi (TTFB)ttfb | Normalne | Ewidentne | WARNING | tak / nie | Sprawdź obciążenie serwera, cache i ciężkie wtyczki. |
LOOP
bez pętliTrafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Ten parametr nie przeszedł jeszcze żadnej pętli. W kolejce pętli 1 jest na pozycji 4.