Blog 24/7
ARK. D08Parametr monitoringuDostępność · lista 87 parametrów

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.

ARK. 1

WIKI

artykuł z 16.09.2026 · źródeł 10

Pró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].

RYS. 1.1Fazy do pierwszego bajtu

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].

RYS. 1.2Składowe TTFB

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 responseStart jako 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 responseStart w API przeglądarki; różnica responseStart i requestStart mierzy czas trwania samego żądania [4]. Dla zasobu z innego źródła bez nagłówka Timing-Allow-Origin wartość 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

ObserwacjaCo widać w pomiarzeMożliwa przyczyna
TTFB do 0,8 swynik w przedziale dobrym [1]strona serwowana z pamięci podręcznej [8]
TTFB powyżej 1,8 swynik w przedziale słabym [1]generowanie strony bez cache, ciężkie wtyczki [6] [8]
Wysoki TTFB, krótki czas serwera w Server-Timingopóźnienie poza aplikacjąprzekierowania, DNS, połączenie, TLS [1]
Wysoki czas db w Server-Timingdominuje baza danych [5] [6]wolne zapytania do bazy [6]
Pojedynczy wolny odczyt, kolejne szybkiejedna próbka z rozkładu [10]zimna pamięć podręczna, warunki sieci [10]
Wolne odczyty w wielu kolejnych pomiarachspowolnienie utrwalone w seriiprzeciążony hosting, brak pamięci [6]
Niski TTFB przy 103 Early Hintsliczy się odpowiedź tymczasowa [1]odpowiedź końcowa może przyjść później [2]
TAB. 1.1Przypisy10
  1. [1] Time to First Byte (TTFB) · web.dev (Google)
  2. [2] Time to first byte — Glossary · MDN Web Docs
  3. [3] Navigation Timing Level 2 · W3C
  4. [4] PerformanceResourceTiming: responseStart property · MDN Web Docs
  5. [5] Server Timing · W3C
  6. [6] Optimize Time to First Byte · web.dev (Google)
  7. [7] Optimize Largest Contentful Paint · web.dev (Google)
  8. [8] Cache — Advanced Administration Handbook · WordPress.org
  9. [9] Hooking WP-Cron Into the System Task Scheduler — Plugin Handbook · WordPress.org
  10. [10] Why lab and field data can be different · web.dev (Google)
ARK. 2

STATS

wyniki z systemu · tylko liczby zbiorcze
TAB. 2.1Odczyty per stronaostatni dzień pomiaru 06.11.2026
Stron zmierzonych
270w ostatnim dniu pomiaru
OK
452odczytów
Fail
2odczytów
Nie dało się sprawdzić
60timeout, blokada, limit zapytań
Udział fail
0,4%bez „nie dało się”
TAB. 2.2Od początkuod 17.09.2026
Stron łącznie
272choć jeden odczyt
OK
68762odczytów
Fail
171odczytów
Nie dało się sprawdzić
9048timeout, blokada, limit zapytań
Udział fail
0,2%bez „nie dało się”
RYS. 2.130 dnicheck_type: ttfb
08.10.202623.10.202606.11.2026
Odczyty parametru Próg TTFB, 30 dni · wysokość słupka = liczba odczytów dnia, warstwy od dołu: fail, nie dało się sprawdzić, ok · dni ze stanem „fail”: 08.10.2026, 09.10.2026, 10.10.2026, 11.10.2026, 12.10.2026, 13.10.2026, 14.10.2026, 15.10.2026, 16.10.2026, 17.10.2026, 18.10.2026, 19.10.2026, 20.10.2026, 21.10.2026, 22.10.2026, 23.10.2026, 24.10.2026, 25.10.2026, 26.10.2026, 27.10.2026, 28.10.2026, 29.10.2026, 30.10.2026, 31.10.2026, 01.11.2026, 02.11.2026, 03.11.2026, 04.11.2026, 05.11.2026, 06.11.2026 · dni ze stanem „nie dało się sprawdzić”: 08.10.2026, 09.10.2026, 10.10.2026, 11.10.2026, 12.10.2026, 13.10.2026, 14.10.2026, 15.10.2026, 16.10.2026, 17.10.2026, 18.10.2026, 19.10.2026, 20.10.2026, 21.10.2026, 22.10.2026, 23.10.2026, 24.10.2026, 25.10.2026, 26.10.2026, 27.10.2026, 28.10.2026, 29.10.2026, 30.10.2026, 31.10.2026, 01.11.2026, 02.11.2026, 03.11.2026, 04.11.2026, 05.11.2026, 06.11.2026
Odczyty parametru Próg TTFB, 30 dni
Dzieńfailnie dało się sprawdzićok
08.10.20262 odczyty226 odczytów1554 odczyty
09.10.20262 odczyty227 odczytów1553 odczyty
10.10.20262 odczyty330 odczytów1450 odczytów
11.10.20262 odczyty152 odczyty1628 odczytów
12.10.20263 odczyty151 odczytów1628 odczytów
13.10.20263 odczyty186 odczytów1593 odczyty
14.10.20264 odczyty212 odczytów1566 odczytów
15.10.20262 odczyty218 odczytów1562 odczyty
16.10.20262 odczyty213 odczytów1567 odczytów
17.10.20262 odczyty213 odczytów1567 odczytów
18.10.20262 odczyty252 odczyty1528 odczytów
19.10.20262 odczyty214 odczytów1566 odczytów
20.10.20262 odczyty221 odczytów1559 odczytów
21.10.20262 odczyty170 odczytów1619 odczytów
22.10.20262 odczyty156 odczytów1624 odczyty
23.10.20263 odczyty153 odczyty1626 odczytów
24.10.20264 odczyty196 odczytów1582 odczyty
25.10.20262 odczyty198 odczytów1582 odczyty
26.10.20262 odczyty223 odczyty1557 odczytów
27.10.20262 odczyty220 odczytów1560 odczytów
28.10.20262 odczyty228 odczytów1552 odczyty
29.10.202610 odczytów220 odczytów1557 odczytów
30.10.20262 odczyty228 odczytów1648 odczytów
31.10.20264 odczyty226 odczytów1648 odczytów
01.11.20264 odczyty203 odczyty1671 odczytów
02.11.20263 odczyty236 odczytów1698 odczytów
03.11.20264 odczyty366 odczytów1608 odczytów
04.11.20265 odczytów397 odczytów1674 odczyty
05.11.20264 odczyty449 odczytów1579 odczytów
06.11.20262 odczyty60 odczytów452 odczyty
TAB. 2.3Ustaleniaod 13.07.2026
Otwarte teraz
5stron: 5 · w okresie łaski: 10
Nowe w ostatnim dniu
104.11.2026
Otwarte od początku
154stron: 77
Zamknięte
139od początku
Mediana trwania
8 h 33 minod wykrycia do zamknięcia
UstalenieSkutekOtwarte terazŁącznieZamknięte
Czas odpowiedzi (TTFB) ttfbusterka niekrytyczna5154139
RYS. 2.2Nowe ustalenia, 30 dni
08.10.202623.10.202606.11.2026
Nowe ustalenia parametru Próg TTFB, 30 dni · wysokość słupka = liczba ustaleń dnia, warstwy od dołu: nowe ustalenia · dni bez odczytu: 15
Nowe ustalenia parametru Próg TTFB, 30 dni
Dzieńnowe ustalenia
08.10.20261 ustalenie
09.10.20260 ustaleń
10.10.20260 ustaleń
11.10.20261 ustalenie
12.10.20262 ustalenia
13.10.20262 ustalenia
14.10.20260 ustaleń
15.10.20260 ustaleń
16.10.20261 ustalenie
17.10.20260 ustaleń
18.10.20260 ustaleń
19.10.20260 ustaleń
20.10.20260 ustaleń
21.10.20260 ustaleń
22.10.20261 ustalenie
23.10.20261 ustalenie
24.10.20260 ustaleń
25.10.20261 ustalenie
26.10.20260 ustaleń
27.10.20260 ustaleń
28.10.20260 ustaleń
29.10.20265 ustaleń
30.10.20261 ustalenie
31.10.20261 ustalenie
01.11.20261 ustalenie
02.11.20262 ustalenia
03.11.20261 ustalenie
04.11.20261 ustalenie
05.11.20260 ustaleń
06.11.20260 ustaleń
TAB. 2.4Przebiegi z tym sposobem sprawdzeniaod 09.09.2026
Przebiegów
60sposób ttfb
W 30 dni
0przebiegów
Ostatni
19.09.2026start przebiegu
Stron w przebiegach
20461 przebiegów bez liczby stron
ARK. 3

CARD

karta z kodu CREATO_PING, odczyt 22.09.2026

Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.

RYS. 3.1Droga parametru przez system: Próg TTFB
TAB. 3.1Pomiarpliki: 7
Obszar i ważnośćDostępność · średnia (D08)
Workflow i częstotliwośćcreato_ping_avail_v2 działa na LAB247Skaner 2.0, rytm „dostepnosc”: premium co 15 min, reszta co 3–12 h · Dawny workflow n8n avail_v2; od 20.09 te same sondy w rytmie kohort skanera. Sposób ssl daje odczyt ssl_expiry (dni do wygaśnięcia certyfikatu); odczyty trafiają do check_results.
Sonda i helpersposób ttfb · CREATO_PING/helpers/ttfb_check.py
Testy
  1. GET https://domena z podążaniem za przekierowaniami i własnym UA; czas mierzony wokół całego żądania.
  2. Kod HTTP jest odczytany, ale nie oceniany.
  3. Odczyt powyżej progu zwiększa licznik kolejnych wolnych odczytów domeny, odczyt w progu go zeruje; licznik w pliku ttfb_streak.json na serwerze monitoringu.
  4. Tylko skan dostępności raz na dobę (do 50 stron równolegle); dodatkowy odczyt co 6 h stron DOWN/WARNING go nie woła.
Typ wynikuenum: ok / fail / timeout / nie_dalo_sie_sprawdzic (przyczyna `zrodlo_nie_odpowiada`) + czas w ms, licznik kolejnych wolnych odczytów, próg
Jednostkams — w praktyce czas całej odpowiedzi GET razem z przekierowaniami i pobraniem treści, nie czas do pierwszego bajtu
Próg i regułaCzas > 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łaCREATO_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ówSurowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Spłaszczony wynik jedzie dodatkowo do tabeli `check_results` bazy LAB247 (skrzynka `state/checks_outbox` → timer co 10 min); tej tabeli kod LAB247 nie czyści.
Znane rozbieżności
  1. Mierzony jest czas całej odpowiedzi, nie czas do pierwszego bajtu — przy wolnym transferze dużej strony wynik jest zawyżony.
  2. Timeout nie czeka na serię: idzie od razu i dubluje sygnał parametrów TCP i kod HTTP (błąd sieci od 17.09 jest wyjęty — to trzeci stan).
  3. Kod HTTP jest ignorowany: szybka odpowiedź 500 daje ok.
  4. Czas trafia do bazy w check_results.extra.ttfb_ms, nie w elapsed_ms (tam 0 albo czas paczki) — sprawdzone na produkcji 25.09; statystyki panelu czytają extra (lib/dostepnosc/czas-odpowiedzi.ts).
kandydaci do pętli: kod a opis parametru albo specyfikacja
Karta przepisana zCREATO_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 · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026
TAB. 3.2Co oznacza failtypów Findingów: 1

ttfb: bramka polityki otwarta (gate=true) → sprawa w skanerze → Serwer odpowiada wolno — waga 2 → ocena 3–4 (niebieski), status strony „niski”, dopóki sprawa jest otwarta. Okres łaski: 1. porażka zakłada sprawę ze statusem IN PROGRESS, której wskaźnik NIE liczy (`ocena.py` pomija sprawy niepotwierdzone), 2. porażka z rzędu potwierdza sprawę i dopiero wtedy usterka wchodzi do oceny. Pierwszy odczyt ok zamyka sprawę. Zanim to nastąpi, helper wymaga serii: porażka dopiero przy 3. kolejnym wolnym odczycie, więc przy skanie dobowym usterka wchodzi do oceny najwcześniej po 4 dniach. Od 17.09 błąd sieci i brak odpowiedzi nie są porażką, tylko trzecim stanem `nie_dalo_sie_sprawdzic` (`zrodlo_nie_odpowiada`) — o niedostępności mówią tcp i http, nie próg czasu.

KodFindingSeverityPewnośćSkutekFinding / alarmWaga → ocenaCo zrobić
D08.01Czas odpowiedzi (TTFB)ttfbŚredniaEwidentneusterka niekrytycznatak / niewaga 2 → ocena 3–4 (niebieski)Sprawdź obciążenie serwera, cache i ciężkie wtyczki.
TAB. 3.3D08.01 · Czas odpowiedzi (TTFB)wersja 1 · 01.10.2026
Kod i kluczD08.01 · ttfb · w tabeli typów
Co znaczySerwer odpowiada wolniej niż 3 s w kolejnych skanach.
Kiedy powstajeCzas GET strony do odpowiedzi. Status fail, gdy liczba kolejnych pomiarów powyżej 3000 ms (CREATO_PING_TTFB_THRESHOLD_MS) osiągnie co najmniej 3 (CREATO_PING_TTFB_STREAK); szybki pomiar zeruje licznik. Timeout po 10 s daje status timeout i zwiększa licznik. Błąd sieci daje nie_dalo_sie_sprawdzic.Licznik jest zapisywany w state/ttfb_streak.json.
Severity · pewnośćŚrednia · Ewidentne
Skutek dla stronyusterka niekrytyczna · zakłada Finding · alarm nie
Waga → ocenawaga 2 → ocena 3–4 (niebieski)
KlasyfikacjaOCSF 1.9.0: poza klasami Findingu
Rekord OCSFfinding_info.analytic.uid = "D08.01" · analytic.name = "ttfb" · finding_info.types = ["D08 Próg TTFB"]
Co zrobićSprawdź obciążenie serwera, cache i ciężkie wtyczki.
Wersje typu
  1. v1 · 01.10.2026 — kod D08.01 nadany (finding-codes.ts)
ARK. 4

LOOP

bez pętli
RYS. 4.1Pętla parametru — sześć etapów
TAB. 4.1Trafność, 30 dnialarmy · prawdziwe · fałszywe · bez rozstrzygnięcia

Trafnoś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.

TAB. 4.2Pętle—

Ten parametr nie przeszedł jeszcze żadnej pętli. W kolejce pętli 1 jest na pozycji 4.

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com