Czas TTFB (ang. Time to First Byte) to czas liczony od wysłania przez klienta zapytania do serwera WWW do momentu odebrania pierwszego bajtu danych. TTFB uwzględnia zatem czas potrzebny na:
- dotarcie zapytania od klienta do serwera WWW,
- przygotowanie odpowiedzi przez serwer,
- dotarcie odpowiedzi od serwera do klienta.
Czas TTFB daje realny obraz wydajności, szybkości i efektywności połączenia. Może służyć jako benchmark w przypadku porównywania wydajności i efektywności zarówno:
- serwerów WWW,
- rozwiązań pośredniczacych typu, Proxy, Reverse Proxy, CDN (Content Delivery Network)
- wydajność oprogramowania serwerowego,
- architektur opartych o gotowe CMSy (Content Management System).
Im niższy czas TTFB tym lepiej. Czas TTFB może dotyczyć zarówno samej strony internetowej jak i poszczególnych jej zasobów, np. plików ze stylami i JS
Czas płynie powoli, kiedy czeka się na odpowiedź
Eric-Emmanuel Schmitt
Jak badać czas TTFB?
Czas TTFB można badać za pomocą:
1: Specjalnych stron internetowych np.: ByteCheck.com,

2: Własnej przeglądarki (w przeglądarce Chrome – klawisz F12 >> Network. w wodospadzie jest wyszczególniony czas TTFB)

3: Narzędzi typu PageSpeed Insights lub tools.PingDom.com.
Co ma wpływ na czas TTFB?
- Parametry hostingu zależne od usługodawcy hostingu WWW
- Konfiguracja – zależna od administratora serwera
- Czas wykonywania się skryptów PHP – zależna od deweloperów
- Czasy odpowiedzi wszystkich składowych architektury i ogólna wydajność aplikacji.
TTFB a szybkość działania strony
Należy zrozumieć, że TTFB jest opóźnieniem w wymianie informacji. Można mieć bardzo niskie TTFB i jednocześnie powolnie ładującą się stronę (z powodu zbyt małej przepustowości łącza lub mało zoptymalizowanego Front-Endu). Z perspektywy użytkownika będzie wrażenie natychmiastowego przełączania ale powolnego pojawiania się zawartości strony np. obrazków. Tzw czas do pełnej interaktywności strony będzie wysoki.
Z drugiej strony można mieć kilkakrotnie wyższe TTFB i wydajną stronę dzięki optymalizacji za pomocą optymalizacji front-endu, CDN i dużej przepustowości łącza. Użytkownik będzie miał wrażenie, że to co widzi na ekranie pojawia się później niż powinno. Tak jakby wolniej działały… linki. Ale strona kiedy już „zaskoczy” pojawia się niemal natychmiast.
Najlepszy efekt da oczywiście niskie TTFB i bardzo dobra optymalizacja front-endu. To spowoduje, że strony będą szybkie i wydajne czyli będą się pojawiać niemal równo z klikiem myszki lub tapnięciem na ekran.
Szkodliwość wysokich czasów TTFB polega na tym, że jest to opóźnienie, którego nie da się nadrobić innymi działaniami optymalizacyjnymi lub wyeliminować za pomocą „triku” w postaci pamięci podręcznej przeglądarki. Doświadczamy go nie tylko podczas ładownia się pierwszej strony ale wszystkich kolejnych. Marnuje to tzw. crawl-budget czyli czas jaki wyszukiwarka codziennie rezerwuje na indeksację naszej witryny. TTFB znacząco wpływa na uczucie szybkości i responsywności działania strony, ogólną wygodę i doświadczenia użytkowników.
Jak skrócić czas reakcji serwera TTFB?
- migracja na szybszy, bardziej wydajny hosting – np. o mocniejszym CPU, większej ilości RAM i szybszym łączem,
- zmiana serwera na popularne rozwiązanie Apache lub nginx, które charakteryzują się większą kompatybilnością z popularnymi CMSami i frameworkami.
- aktualizacja PHP – dzięki optymalizacji nowsze wersje PHP są bardziej wydajne,
- migracja na HTTP/2 – odciąża hosting i pośrednio skraca czas TTFB,
- odciążenie hostingu za pomocą CDN (Content Delivery Network) lub rozwiązań hybrydowych typu CloudFlare (skraca TTFB zasobów statycznych i odciąża hosting),
- optymalizacja w warstwie Front-End – mniejsza ilość zapytań odciąża serwer HTTP i przez to może odpowiadać szybciej, zobacz jak optymalizować pliki JS i CSS,
- eliminacja wąskich gardeł w architekturze serwisu/portalu/aplikacji (to może być nieefektywne połączenie sieciowe pomiędzy centrami danych, pamięć masowa, baza danych SQL, usługi zewnętrzne). Czytaj więcej np. o optymalizacji MySQL
- relokacja serwera do lokalizacji geograficznie bliższych użytkownikom – warto przy tym zadbać aby serwer HTTP, Back-End i bazy danych były umieszczone w tym samym centrum danych,
- wdrożenie mechanizmów High-Avalibility (np. HAProxy)
- wykorzystanie akceleratorów (np. nginx)
- skalowanie hostingu – horyzontalne i/lub wertykalne.
W przypadku portali z dużym ruchem i niestandardowych CMSów:
- odciążenie hostingu za pomocą pamięci podręcznej w warstwie aplikacji (np. wdrożenie memcached),
- wdrożenie aplikacji o odwrotny serwer pośredniczący (ang. Reverse Proxy),
- partycjonowanie funkcjonalne,
- wdrożenie mechanizmów balansujących obciążenie (ang. Load Balancing)
TTFB w przypadku zasobów statycznych
Pomijanym i często niezrozumianym faktem jest to, że TTFB nie dotyczy tylko strony internetowej ale każdego pojedynczego zasobu, który jest pobierany w trakcie generowania ostatecznej postaci strony WWW w przeglądarce. TTFB dotyczy nie tylko dynamicznej strony internetowej ale także stron statycznych i samych plików. W tym wypadku TTFB jest uzależnione całkowicie od infrastruktury hostingu. Niwelując liczbę przeskoków, odległość geograficzną od klienta do serwera lub kierując zapytania do najmniej obciążonych hostów w danym momencie możemy go skrócić. Zobacz w moim teście jak CDN wpływa na szybkość działania strony.
Jeżeli korzystasz z WordPress
Skróć czas reakcji serwera (ttfb) WordPress:
- wyłączenie wtyczek, które nie realizują kluczowych funkcji,
- zmiana wersji PHP na najnowszą,
- wykorzystanie wtyczki do realizacji cache w warstwie aplikacji (np. WP Super Cache),
- wyczyszczenie bazy danych za pomocą wbudowanych funkcji lub gotowej wtyczki WP-Sweep
- migracja na wydajniejszą opcję hostingu (lub migracja z hostingu współdzielonego na wysokiej jakości VPS lub dedykowany).
- zmiana hostingu na Apache lub nginx (wymienione w dokumentacji jako najlepsze rozwiązania dla WordPress).
Czytaj więcej w artykule: przyspieszanie WordPress
Jeżeli korzystasz z PrestaShop
- wyłączenie modułów, które nie realizują kluczowych funkcji,
- wyłączenie funkcji wariantów (jeżeli nie są wykorzystywane),
- zmiana wersji PHP na najnowszą,
- wykorzystanie wbudowanej pamięci podręcznej (wykorzystuje memcached),
- tuning serwera MySQL,
- zmiana ustawień Smarty,
- funkcje CCC (minimalizują zapytania i jest szansa na odciążenie),
- migracja na wydajniejszą opcję hostingu (lub migracja z hostingu współdzielonego na wysokiej jakości VPS lub dedykowany),
- zmiana hostingu na Apache (wymienione w dokumentacji jako serwer docelowy) lub nginx (oznaczony jako kompatybilny).
Czytaj więcej w artykule przyspieszanie PrestaShop
Podsumowanie
Czas TTFB informuje o kondycji całej aplikacji. Wpływa na opóźnienie a wysokie wartości są oznaką, że wymagane są działania optymalizujące. Niski czas TTFB wspomaga indeksację (oszczędzając i efektywnie wykorzystując crawl-budget) i pozytywnie wpływa na szybkość działania całego serwisu.
Źródła
https://www.php.net/manual/en/book.opcache.php
Paweł Mansfeld – Scaling of Web Applications by Example of QQMODELS Website (niepubliczne)
Odpowiedz lub skomentuj