Web Performance

De ce Time to First Byte este lent și ce poți face în privința lui

TTFB nu este un singur bug. Este întârzierea vizibilă cauzată de DNS, configurarea conexiunii, rutarea prin CDN, munca serverului, ratările de cache și, uneori, o singură interogare lentă a bazei de date.

The Wux Webtools Team The Wux Webtools Team 12 min citire Asistat de AI, revizuit de oameni
A simplified network path from a browser to a CDN and origin server showing points where latency can occur.
Cuprins
  1. Începe cu ce măsoară de fapt TTFB
  2. Ce înseamnă un TTFB lent?
  3. Măsoară-l în mai mult de un loc
  4. 1. Instrumentele pentru dezvoltatori ale browserului
  5. 2. Teste sintetice din mai multe regiuni
  6. 3. Monitorizare a utilizatorilor reali sau loguri de server
  7. Cauzele obișnuite ale unui TTFB lent
  8. HTML-ul nu este cache-uit
  9. CDN-ul cache-uiește doar asseturi
  10. Serverul face prea multe înainte să răspundă
  11. Interogările bazei de date sunt lente sau imprevizibile
  12. Aplicația are cold starts
  13. Redirecturile irosesc prima cerere
  14. O secvență practică de depanare
  15. Pasul 1: Testează documentul principal, nu doar întreaga pagină
  16. Pasul 2: Compară regiunile
  17. Pasul 3: Inspectează headerele de răspuns
  18. Pasul 4: Verifică timpii la origin
  19. Pasul 5: Remediază cea mai mare întârziere confirmată
  20. Remedieri care funcționează de obicei
  21. Cache-uiește HTML-ul public la edge
  22. Mută munca necritică în afara căii cererii
  23. Redu lanțurile de dependențe backend
  24. Pune compute-ul mai aproape de utilizatori
  25. Păstrează redirecturile banale
  26. Ce să nu faci
  27. Versiunea calmă a planului

Începe cu ce măsoară de fapt TTFB

Time to First Byte, prescurtat de obicei TTFB, este timpul dintre momentul în care browserul solicită o resursă și momentul în care primește primul octet al răspunsului.

Pare o metrică de server, dar nu este doar o metrică de server. TTFB include mai mulți pași:

  • Căutarea DNS, dacă hostname-ul nu este deja rezolvat
  • Configurarea conexiunii TCP
  • Negocierea TLS pentru HTTPS
  • Timpul de deplasare al cererii către server sau către marginea CDN
  • Așteptarea la coadă și procesarea pe server
  • Timpul de deplasare al răspunsului înapoi către browser

Așadar, un TTFB ridicat poate însemna că backendul este lent. Poate însemna și că utilizatorul este departe de origin, că CDN-ul este configurat greșit, că apar constant ratări de cache sau că serverul petrece prea mult timp decidând ce să trimită.

Acest lucru contează deoarece TTFB se află aproape de începutul lanțului de încărcare. Dacă documentul HTML ajunge târziu, browserul descoperă târziu și CSS, JavaScript, fonturile și imaginile. Poți avea o optimizare front-end excelentă și totuși site-ul să pară lent dacă primul răspuns al documentului durează 1,5 secunde.

Ce înseamnă un TTFB lent?

Nu există un număr universal care să se potrivească fiecărui site, fiecărei regiuni și fiecărei arhitecturi. Totuși, pragurile practice ajută.

Recomandările Google web.dev clasifică un TTFB bun ca fiind sub 800 ms, 800–1800 ms necesitând îmbunătățiri, iar peste 1800 ms fiind considerat slab. Pentru o pagină de marketing bine cache-uită, servită aproape de utilizator, poți obține adesea valori mult mai bune. Pentru un dashboard autentificat complex, care face muncă dinamică, valoarea acceptabilă poate fi mai mare, dar ar trebui totuși să poată fi explicată.

Obiceiul important este să segmentezi numărul. Un TTFB mediu global de 900 ms poate ascunde un răspuns de 150 ms pentru utilizatorii aflați lângă marginea CDN-ului și un răspuns de 2200 ms pentru utilizatorii din altă regiune. La fel, homepage-ul poate fi în regulă, în timp ce paginile de căutare, categorie sau cele pentru utilizatori autentificați sunt discret dureroase.

Măsoară-l în mai mult de un loc

Nu diagnostica TTFB dintr-o singură rulare Lighthouse. Lighthouse este util, dar este un test dintr-un singur mediu. Dacă ești la început cu interpretarea lui, pornește de la o lectură calmă despre cum să citești un raport Lighthouse fără panică — lecția principală este să separi semnalele de laborator de realitatea din teren.

Pentru TTFB, ai nevoie de cel puțin trei perspective:

1. Instrumentele pentru dezvoltatori ale browserului

Deschide panoul Network, reîncarcă pagina cu cache-ul dezactivat și inspectează cererea pentru documentul principal. Defalcarea timpilor arată fazele DNS, conexiune, TLS, așteptare și descărcare. Faza „waiting” este adesea ceea ce oamenii numesc timp de backend, deși poate include și latență upstream.

2. Teste sintetice din mai multe regiuni

Rulează teste din locații apropiate și îndepărtate de utilizatorii tăi. Dacă TTFB este mic într-o regiune și mare în alta, suspectează geografia, rutarea prin CDN, amplasarea origin-ului sau acoperirea cache-ului înainte de a rescrie codul aplicației.

3. Monitorizare a utilizatorilor reali sau loguri de server

Datele din teren îți arată ce experimentează utilizatorii reali pe dispozitive, rețele și sesiuni diferite. Logurile de server îți pot spune dacă origin-ul a generat rapid un răspuns. Diferența dintre TTFB observat de client și timpul de procesare la origin este adesea locul în care apar problemele de CDN și rețea.

Cauzele obișnuite ale unui TTFB lent

HTML-ul nu este cache-uit

Aceasta este cea mai frecventă problemă pe site-urile de conținut și pe site-urile ecommerce. Asseturile statice sunt cache-uite agresiv, dar documentul HTML — lucrul de care browserul are nevoie primul — este generat la fiecare cerere.

Uneori este necesar. Adesea nu este.

Dacă o pagină publică se schimbă de câteva ori pe zi, probabil nu ar trebui să necesite o randare proaspătă din baza de date pentru fiecare vizitator anonim. Folosește full-page caching, edge caching, generare statică sau modele stale-while-revalidate acolo unde este potrivit.

Verifică headerele de răspuns pentru semnale precum Cache-Control, CDN-Cache-Status, Age, Vary și Set-Cookie. O pagină care trimite un cookie unic fiecărui vizitator se poate face accidental imposibil de cache-uit. Dacă ai nevoie de o modalitate practică de a raționa despre acest strat, aceleași obiceiuri de depanare din ghidul nostru despre redirecturi și headere HTTP în producție se aplică direct muncii legate de TTFB.

CDN-ul cache-uiește doar asseturi

Multe echipe adaugă un CDN și presupun că munca de performanță s-a încheiat. Dar dacă CDN-ul servește doar imagini, CSS și JavaScript, prima cerere HTML poate călători în continuare până la un singur server origin.

Acest lucru poate fi în regulă pentru site-ul unei afaceri locale cu utilizatori locali. Nu este în regulă pentru un public internațional. Cu cât utilizatorul este mai departe de origin, cu atât plătești mai multă latență înainte ca munca de backend să înceapă măcar.

O configurație CDN bună pentru TTFB înseamnă de obicei:

  • Cache-uiește HTML-ul public acolo unde este sigur
  • Respectă regulile intenționate de bypass pentru pagini autentificate sau personalizate
  • Evită headerele Vary inutile care fragmentează cache-ul prea fin
  • Folosește purjarea cache-ului sau revalidarea în loc să dezactivezi cache-ul complet
  • Confirmă că locațiile edge servesc efectiv hituri, nu redirecționează fiecare cerere mai departe

Un CDN nu este magie. Este un strat de cache și rutare. Tratează-l ca atare.

Serverul face prea multe înainte să răspundă

O cale backend lentă poate veni din multe întârzieri mici: interogări de baze de date, apeluri API, randare de template-uri, verificări de feature flags, autentificare, personalizare, logare și cold starts.

Cel mai rău tipar este munca serială cu dependențe. De exemplu:

  1. Preia datele paginii
  2. Apoi preia produse similare
  3. Apoi preia prețurile
  4. Apoi apelează un serviciu de recomandări
  5. Apoi randează HTML-ul

Dacă fiecare pas îl așteaptă pe cel anterior, TTFB crește rapid. Paralelizează munca independentă, elimină apelurile necritice din primul răspuns și cache-uiește rezultatele costisitoare.

O regulă utilă: dacă utilizatorul nu poate vedea sau folosi rezultatul imediat, probabil nu ar trebui să blocheze primul octet.

Interogările bazei de date sunt lente sau imprevizibile

Bazele de date cauzează adesea probleme de TTFB deoarece se comportă bine în dezvoltare și prost sub trafic real. Indexuri lipsă, joinuri mari, interogări N+1, contention pe lock-uri și seturi de rezultate supradimensionate apar toate ca „serverul este lent”.

Nu ghici aici. Capturează timpii de interogare pentru cererile lente. Uită-te la p95 și p99, nu doar la medii. O pagină care răspunde de obicei în 120 ms, dar ocazional blochează 4 secunde, va crea totuși o experiență proastă pentru utilizator.

Remedierile obișnuite includ:

  • Adăugarea sau corectarea indexurilor
  • Eliminarea tiparelor de interogări N+1
  • Cache-uirea datelor citite frecvent
  • Paginarea interogărilor mari
  • Mutarea interogărilor de raportare sau analytics în afara timpului de cerere
  • Setarea unor timeout-uri rezonabile pentru apelurile downstream

Aplicația are cold starts

Platformele serverless și containerizate pot fi excelente, dar cold starts pot afecta TTFB când traficul vine în rafale sau regiunile sunt sub-provizionate.

Dacă prima cerere după o perioadă de inactivitate este mult mai lentă decât cererile ulterioare, investighează cold starts. S-ar putea să ai nevoie de provisioned concurrency, bundle-uri mai mici, mai puține dependențe la pornire, funcții încălzite sau o formă diferită de deployment pentru rutele sensibile la latență.

Acesta nu este un argument împotriva serverless. Este un argument împotriva ideii că modelul de runtime este invizibil.

Redirecturile irosesc prima cerere

Un redirect adaugă încă un ciclu cerere-răspuns înainte ca browserul să primească documentul final. Un redirect de la http:// la https:// poate fi inevitabil pentru linkurile vechi, dar lanțurile sunt risipitoare.

Lanțurile obișnuite includ:

  • http://example.comhttps://example.comhttps://www.example.com
  • normalizarea slash-ului final după normalizarea protocolului
  • redirecturi geo sau de limbă înainte de lookup-ul în cache
  • linkuri vechi de campanii care sar prin mai multe URL-uri

Corectează linkurile sursă acolo unde este posibil, compactează regulile de redirect și fă URL-urile canonice directe. Timpul de redirect nu este raportat întotdeauna ca TTFB pentru cererea finală, dar utilizatorul tot îl plătește.

O secvență practică de depanare

Când TTFB pare lent, folosește această ordine. Ea evită greșeala frecventă de a optimiza codul aplicației înainte de a confirma comportamentul cache-ului și al rutării.

Pasul 1: Testează documentul principal, nu doar întreaga pagină

Găsește cererea pentru documentul HTML. Notează TTFB total și defalcarea timpilor. Repetă cu și fără cache-ul browserului. Testează o pagină publică, o pagină dinamică și o pagină pentru utilizatori autentificați, dacă este relevant.

Pasul 2: Compară regiunile

Rulează același URL din mai multe locații geografice. Dacă regiunile lente corelează cu distanța față de origin, prioritizează CDN-ul și edge caching. Dacă fiecare regiune este lentă, uită-te la procesarea backend și la capacitatea origin-ului.

Pasul 3: Inspectează headerele de răspuns

Caută headere de cache, cookie-uri, Age, status CDN și Vary. Un header Age lipsă sau ratări de cache repetate sunt indicii. Un header larg Vary: Cookie pe HTML public este adesea un ucigaș de cache.

Pasul 4: Verifică timpii la origin

Adaugă instrumentare pentru timpii de server. Headerul Server-Timing poate expune faze de backend precum timpul bazei de date, timpul de randare și timpul API-urilor upstream. Chiar și etichetele simple sunt utile:

Server-Timing: db;dur=82, render;dur=41, api;dur=210

Acum timpii din browser pot arăta dacă serverul a petrecut 300 ms pe muncă reală sau dacă întârzierea s-a produs înainte ca cererea să ajungă în aplicația ta.

Pasul 5: Remediază cea mai mare întârziere confirmată

Sună evident, dar echipele repară adesea ce le este familiar, nu ce este măsurat. Dacă ratările de cache domină, repară cachingul. Dacă baza de date domină, repară interogările. Dacă TLS și configurarea conexiunii domină pentru utilizatorii globali, repară rutarea, acoperirea CDN sau geografia origin-ului.

Munca front-end contează în continuare. Fonturile, imaginile și JavaScript afectează ce se întâmplă după ce HTML-ul ajunge. Dar ele nu sunt înlocuitori pentru un prim răspuns rapid. Dacă lucrezi și la performanța de randare, fonturile web rămân unul dintre cele mai simple câștiguri pe multe site-uri, deoarece afectează cât de repede devine textul utilizabil după ce documentul ajunge.

Remedieri care funcționează de obicei

Cache-uiește HTML-ul public la edge

Pentru pagini de marketing, documentație, bloguri, landing pages și pagini de categorie, edge caching este adesea cea mai mare îmbunătățire pentru TTFB. Folosește TTL-uri scurte dacă conținutul se schimbă frecvent. Folosește stale-while-revalidate dacă un conținut ușor învechit este acceptabil în timp ce cache-ul se reîmprospătează în fundal.

Ai grijă la personalizare. Dacă o pagină variază în funcție de monedă, limbă, starea de autentificare sau grupul de experiment, definește explicit acele variante. Variația accidentală per utilizator distruge eficiența cache-ului.

Mută munca necritică în afara căii cererii

Trimiterea de emailuri, îmbogățirea analytics, generarea de recomandări, apelurile webhook și logarea grea ar trebui rareori să blocheze primul octet. Pune-le în cozi sau rulează-le după ce răspunsul a început.

Redu lanțurile de dependențe backend

Paralelizează apelurile independente. Cache-uiește răspunsurile de la API-uri lente. Setează timeout-uri. Proiectează conținut fallback pentru serviciile care sunt utile, dar nu esențiale.

Un widget lent de recomandări nu ar trebui să întârzie întreaga pagină de produs.

Pune compute-ul mai aproape de utilizatori

Dacă utilizatorii tăi sunt globali și origin-ul este într-o singură regiune, latența este structurală. Cachingul prin CDN poate ascunde o mare parte din acest lucru pentru conținutul public. Pentru conținut dinamic, ia în considerare deploymenturi regionale, randare la edge pentru rutele potrivite sau mutarea API-urilor mai aproape de public.

Păstrează redirecturile banale

Canonicalizează URL-urile într-un singur hop. Actualizează linkurile interne astfel încât utilizatorii și crawlerele să meargă direct la destinația finală. Auditează URL-urile vechi de campanii și migrările de platformă. Redirecturile sunt ușor de ignorat deoarece sunt invizibile când funcționează, dar tot costă timp.

Ce să nu faci

Nu urmări un număr TTFB perfect pentru fiecare rută. Un raport autentificat care efectuează calcule reale nu se va comporta ca o postare de blog cache-uită.

Nu folosi TTFB mediu ca singura metrică. Percentilele contează. Geografia contează. Tipul paginii contează.

Nu presupune că un CDN înseamnă că HTML-ul este cache-uit. Verifică.

Și nu trata TTFB ca fiind separat de deciziile de produs. Personalizarea, experimentarea, inventarul în timp real și serviciile terțe au toate costuri de latență. Unele merită. Unele sunt doar obișnuință.

<!-- tool-cta:start -->

💡 Încercați asta: La diagnosticarea TTFB, Get Headers dezvăluie starea cache-ului, timpii serverului și redirecționările care explică adesea de unde provine întârzierea.

<!-- tool-cta:end -->

Versiunea calmă a planului

Un TTFB lent este de obicei remediabil odată ce încetezi să-l tratezi ca pe o vagă „problemă de server”. Măsoară cererea documentului. Segmentează după regiune și tip de pagină. Inspectează headerele. Compară timpul de pe client cu timpul de la origin. Apoi remediază cel mai mare blocaj confirmat.

Cele mai multe site-uri nu au nevoie de arhitectură exotică. Au nevoie de mai puține ratări de cache evitabile, mai puțină muncă backend blocantă, redirecturi mai curate și o idee mai clară despre ce trebuie să se întâmple înainte ca primul octet să fie trimis.

Întrebări frecvente

Este TTFB o metrică Core Web Vitals?
Nu. TTFB nu este una dintre metricile Core Web Vitals, dar influențează puternic metrici precum Largest Contentful Paint, deoarece browserul nu poate randa conținut important până când documentul și resursele sale dependente nu sunt descoperite.
Care este o țintă bună pentru TTFB?
Ca reper general, sub 800 ms este considerat bun de web.dev. Pentru paginile publice cache-uite, multe echipe pot ținti mai jos. Pentru rute autentificate complexe, concentrează-te pe consistență, percentile și pe justificarea întârzierii.
Adăugarea unui CDN va remedia automat TTFB?
Nu neapărat. Un CDN îmbunătățește TTFB doar dacă reduce latența de rutare sau servește răspunsuri cache-uite. Dacă fiecare cerere HTML este redirecționată către origin, CSS-ul și imaginile pot fi rapide, în timp ce documentul rămâne lent.
Poate optimizarea JavaScript să îmbunătățească TTFB?
De obicei, nu direct pentru paginile tradiționale randate pe server. JavaScript afectează parsarea, randarea și interactivitatea după ce răspunsul începe. TTFB ține în principal de livrarea primului octet al răspunsului către browser.
De ce TTFB este lent doar pentru utilizatorii autentificați?
Paginile pentru utilizatori autentificați sunt mai greu de cache-uit deoarece sunt personalizate. TTFB lent acolo vine adesea din interogări de baze de date, verificări de permisiuni, apeluri API, gestionarea sesiunii sau muncă de randare pe server care nu poate fi partajată între utilizatori.

Surse și lecturi suplimentare

  1. web.dev: Optimize Time to First Byte
  2. MDN Web Docs: PerformanceResourceTiming.responseStart
  3. W3C: Server Timing
  4. RFC 9111: HTTP Caching
Despre autor
The Wux Webtools Team

Ultima actualizare:

Continuă să citești