Czas TTFB – jak skrócić (czas reakcji serwera)?

Web Design Blog

Kategoria:
Hosting

Data publikacji:
8 czerwca 2019

Autor:
Paweł Mansfeld

Czas TTFB – jak skrócić (czas reakcji serwera)?

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.

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.

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 szybszą 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ą 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ę wyeliminować za pomocą 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,
  • 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),
  • odciążenie hostingu za pomocą pamięci podręcznej w warstwie aplikacji (np. wdrożenie memcached),
  • 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 balansujących obciążenie (ang. Load Balancing)
  • wdrożenie aplikacji o odwrotny serwer pośredniczący (ang. Reverse Proxy)
  • wdrożenie mechanizmów High-Avalibility (np. HAProxy)
  • wykorzystanie akceleratorów (np. nginx)
  • skalowanie hostingu – horyzontalne wertykalne,
  • partycjonowanie funkcjonalne.

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)

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)

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://developers.google.com/web/tools/lighthouse/audits/ttfb?utm_source=lighthouse&utm_medium=unknown

https://www.php.net/manual/en/book.opcache.php

Paweł Mansfeld – Scaling of Web Applications by Example of QQMODELS Website (niepubliczne)

Czas TTFB – jak skrócić (czas reakcji serwera)? Czas TTFB – jak skrócić (czas reakcji serwera)? 4.6 na 5 na podstawie 11 ocen Czas TTFB – jak skrócić (czas reakcji serwera)?