Czy „Time to first byte” (TTFB) oznacza szybkość serwera ?

Time to first byte (TTFB) jest wartością podawaną w mikrosekundach mierzoną od momentu wysłania zapytania, do chwili otrzymania przez użytkownika pierwszego bajtu danych wysłanych przez serwer. Parametr ten jest niestety jednym z popularniejszych sposobów mierzenia prędkości ładowania się strony. Dlaczego niestety?

Czym miał być parametr TTFB ?

Z założenia metody testowania szybkości mają pomóc w zlokalizowaniu i usprawnieniu wąskiego gardła, które wydłuża czas oczekiwania na usługę. TTFB jest jedynie surową zmienną, sumą wielu innych zmiennych. Nie uwzględnia wielu istotnych parametrów oraz nie pozwala określić, które dokładnie składowe przekładają się na podwyższenie ostatecznego wyniku.

Co mówią testery o TTFB ?

Niektóre testy (np. Google Page Speed Insight, GTmetrix) podają informację, żeby „skrócić czas odpowiedzi serwera”. Jest to dosyć myląca informacja, sugerująca, że problem leży po stronie maszyny hostingowej. Po dokładniejszej analizie można zauważyć, że na odpowiedź serwera składają się między innymi wykonanie skryptu PHP oraz zapytania do bazy danych. W przypadku źle zoptymalizowanej strony przetworzenie skryptu lub wykonanie skomplikowanego zapytania do bazy danych może nawet kilkukrotnie wydłużyć czas oczekiwania na pierwszy bajt – w końcu dane muszą się przetworzyć po stronie serwera przed wysłaniem.

Co oznacza polskie określenie „skróć czas odpowiedzi serwera” ?

Poradnik GTmetrix w tym zakresie na wersji angielskiej (https://gtmetrix.com/reduce-initial-server-response-time.html) wyraźnie opisuje: There are multiple strategies to improve your server response times. Some of the key ones are:
1) Optimizing your application code (including database queries)
2) Implementing server-side caching
3) Upgrading server hardware for more CPU or memory resources

Wyraźnie wydać, że polskie określenie „skróć czas odpowiedzi serwera” w oryginale, tak naprawdę dotyczy głównie parametrów programistycznych:

  • wolna logika budowy aplikacji (czyli w praktyce źle zaprojektowana/zoptymalizowana aplikacja),
  • wolne zapytania do bazy danych (np. zapytania bez indeksów, albo bardzo skomplikowane zapytania do bazy danych),
  • wolny routing (chodzi o routing w aplikacji – czyli w praktyce źle zaprojektowana aplikacja),
  • frameworki (czyli narzut na wykonywanie kodu zasobożernymi frameworkami na których jest zbudowana strona),
  • biblioteki (czyli narzut na wykonywanie kodu zasobożernymi bibliotekami być może wczytywanymi niepotrzebnie),
  • Implementacji cachu w aplikacji,
  • zbyt małe zasoby procesora (to parametr związany z serwerem – najczęściej jednak podawany wprost w pakietach hostingowych),
  • zbyt małe zasoby pamięci (to parametr związany z serwerem – najczęściej jednak podawany wprost w pakietach hostingowych).

Należy uwzględnić wszystkie powyższe parametry, żeby poprawić „czas odpowiedzi serwera”.

Jak się ma TTFB do szybkości pobrania strony ?

Warto też zaznaczyć, że szybkość otrzymania pierwszego bajtu, a całej zawartości strony to dwie, niekonieczne związane ze sobą wartości. W teście przeprowadzonym przez Cloudflare (całość testu można obejrzeć tutaj: https://blog.cloudflare.com/ttfb-time-to-first-byte-considered-meaningles/) skompresowana strona pobrała się 5 razy szybciej, pomimo tego, że przesłanie jej pierwszego bajtu trwało 8 razy dłużej niż gdy treść była nieskompresowana.

Dodatkowe parametry mające wpływ na TTFB

Podczas wykonywania testu za pomocą jednej ze stron dostępnych w internecie otrzymujemy wartość TTFB zmierzoną pomiędzy serwerem tej strony testującej, a serwerem, na którym zlokalizowana jest strona poddawana testowi. Większość serwerów oferujących testy TTFB znajduje się poza granicami Polski czy nawet Europy. Z racji, że fizyczna lokalizacja oraz odległość jest bardzo ważnym czynnikiem w tego rodzaju testach (opóźnienia na łączach międzynarodowych i transkontynentowalnych), otrzymany wynik może nie do końca dać nam danych jakich byśmy oczekiwali, ponieważ posiadając polską stronę skierowaną do polskich użytkowników interesuje nas raczej czas ładowania na obszarze Polski niż np. Stanów Zjednoczonych.

Czy TTFB jest użyteczne ?

Mając na uwadze te oraz inne niewymienione tu czynniki takie jak np. czas odpowiedzi serwera DNS, można dojść do wniosku, iż TTFB nie jest odpowiednim sposobem mierzenia wydajności serwera ale raczej sposobem mierzenia wydajności i optymalizacji strony www. Z punktu widzenia użytkownika ważniejszy jest czas załadowania się całej strony, a nie otrzymania pierwszego bajtu, tak więc optymalizowanie swojej strony pod kątem TTFB nie zawsze wpływa pozytywnie na wydajność całej strony. Warto poszukać innych, bardziej miarodajnych metod testowania aplikacji internetowych oraz skupić się przede wszystkim na optymalizowaniu kodu (np. php) oraz liczby i „ciężkości” zapytań SQL.

Tomasz

Dodaj komentarz