Time to First Byte (TTFB): guida

Che cosa misura TTFB, perché non è un Core Web Vital, come limita LCP e FCP, che cosa si considera buono e come correggere una risposta server lenta.

Prima pubblicazione: 26 giu 2026 · Ultimo aggiornamento: 3 ago 2026 · Advanced
Lingue

Time to First Byte è il tempo dall’inizio di una richiesta all’arrivo del primo byte della risposta — la somma di redirect, avvio del service worker, ricerca DNS, connessione e negoziazione TLS e richiesta stessa. Non è un Core Web Vital: è una metrica diagnostica fondamentale e un input importante per FCP e LCP. web.dev indica ≤0,8 s come buono e >1,8 s come scarso. È una metrica sia sul campo sia in laboratorio. L’audit Lighthouse «Reduce server response times» è più ristretto: segnala circa 600 ms di tempo server, non il TTFB completo, e da Lighthouse 13 vive nell’insight «Document request latency». Correggilo con CDN, cache edge/HTML, hosting più veloce, meno redirect, Early Hints e TLS efficiente. E ricorda: un TTFB alto non significa sempre un sito lento.

TL;DR — TTFB è il tempo dall’inizio della richiesta all’arrivo del primo byte della risposta — la somma di tempo dei redirect, avvio del service worker, ricerca DNS, negoziazione della connessione + TLS e richiesta stessa, fino a quel primo byte. Non è un Core Web Vital; è una metrica fondamentale e diagnostica che alimenta FCP e LCP. web.dev: buono ≤0,8 s, scarso >1,8 s (75° percentile). È una metrica sia di campo sia di laboratorio. L’audit Lighthouse «Reduce server response times» è più ristretto: segnala un tempo server oltre ~600 ms, non il TTFB completo, e da Lighthouse 13 vive nell’insight «Document request latency». Risolvilo con CDN, cache edge/HTML, hosting più veloce, meno redirect, 103 Early Hints e TLS efficiente. E un TTFB alto non significa sempre un sito lento.

Che cosa misura davvero il TTFB

TTFB misura il tempo tra l’inizio della navigazione verso una pagina e l’inizio dell’arrivo del primo byte della risposta. L’errore comune è trattarlo come puro tempo di elaborazione backend. Non lo è. È la somma di tutto ciò che deve terminare prima che quel primo byte possa tornare:

  1. Tempo dei redirect
  2. Tempo di avvio del service worker (se applicabile)
  3. Ricerca DNS
  4. Negoziazione della connessione e TLS
  5. La richiesta — fino al momento in cui è arrivato il primo byte della risposta

Il tempo di elaborazione del server è incluso, ma lo è anche l’intero costo della configurazione della connessione. La distinzione conta quando inizi a leggere gli strumenti, perché non misurano tutti la stessa porzione (ne parleremo più avanti).

Evidence for this claim TTFB measures from request start until the first response byte and includes redirect, connection setup, and server-response time. Scope: Current web.dev navigation TTFB definition. Confidence: high · Verified: web.dev: Time to First Byte

Non è un Core Web Vital

Lo dico chiaramente perché è il malinteso più comune: TTFB non è un Core Web Vital. I tre Core Web Vitals sono LCP (caricamento), INP (interattività) e CLS (stabilità visiva). TTFB è una metrica fondamentale e diagnostica — la formulazione di Google è che è «a foundational metric for measuring connection setup time and web server responsiveness in both the lab and the field» («una metrica fondamentale per misurare il tempo di configurazione della connessione e la reattività del web server sia in laboratorio sia sul campo»).

Google è esplicito anche sul fatto che non devi necessariamente raggiungere la soglia TTFB buona: poiché non è un Core Web Vital, «not absolutely necessary that sites meet the ‘good’ TTFB threshold, provided that it doesn’t impede their ability to score well on the metrics that matter» («non è assolutamente necessario che i siti raggiungano la soglia TTFB “buona”, purché ciò non impedisca loro di ottenere buoni risultati nelle metriche che contano»). L’ultima clausola è il punto: per la maggior parte dei siti un TTFB cattivo ostacola davvero le metriche importanti.

Come limita FCP e LCP

TTFB precede ogni metrica di caricamento centrata sull’utente. Sia First Contentful Paint sia Largest Contentful Paint includono il TTFB nella misurazione: il cronometro di quelle metriche è già in funzione mentre aspetti il primo byte. web.dev scompone LCP in parti e TTFB è la prima, per questo non puoi avere un LCP veloce costruito sopra un TTFB lento.

È anche qui che i dati reali diventano indicativi. Il Web Almanac di HTTP Archive ha rilevato che, sui siti con LCP scarso, il solo TTFB consumava circa 2,27 secondi — quasi tutto il budget di 2,5 secondi per un «buon LCP» — prima ancora che immagini o testo iniziassero a essere renderizzati. Se il tuo LCP è cattivo e il contenuto on-page sembra ottimizzato, TTFB è il primo punto che controllerei.

La storia del ranking è quindi indiretta ma reale: TTFB non è un segnale di ranking Google (i segnali di ranking sono LCP, INP e CLS — TTFB non è nominato in quell’insieme). Ma è incorporato in LCP, che è un segnale di ranking. Il percorso passa da LCP, non direttamente da TTFB.

Soglie: buono, da migliorare, scarso

Le indicazioni di web.dev, misurate al 75° percentile dei caricamenti di utenti reali:

  • Buono: ≤ 0,8 s
  • Scarso: > 1,8 s
Evidence for this claim web.dev recommends a TTFB of 0.8 seconds or less; above 1.8 seconds is poor at the 75th percentile. Scope: Current web.dev TTFB guidance; TTFB is diagnostic, not a Core Web Vital. Confidence: high · Verified: web.dev: Time to First Byte

«Most sites should strive to have a TTFB of 0.8 seconds or less.» («La maggior parte dei siti dovrebbe puntare a un TTFB di 0,8 secondi o meno».) Vale la pena conoscere la storia: Google ha spostato la linea del «buono» da 500 ms a 800 ms nel 2022 e i dati precedenti sono stati ricalcolati secondo il nuovo standard; non confrontare numeri TTFB storici grezzi senza controllare quale soglia usavano.

La confusione tra 600 ms e 800 ms

Questo confonde molte persone, quindi è utile essere precisi. Circolano due numeri diversi:

  • Soglia TTFB CrUX / web.dev: 800 ms. È la soglia sul campo per il TTFB completo (DNS + connessione + TLS + redirect + tempo server).
  • Audit Lighthouse «Reduce server response times»: ~600 ms. È un audit di laboratorio che segnala quando il browser aspetta più o meno 600 ms perché il server risponda alla richiesta del documento principale. Soprattutto, misura solo il tempo di risposta del server: non include DNS, configurazione della connessione o TLS.

Il numero Lighthouse sembra quindi più severo, ma misura una porzione più ristretta. Come dicono i documenti, «server response time is only part of the full Time to First Byte (TTFB)» («il tempo di risposta del server è solo una parte del Time to First Byte (TTFB) completo»). Non considerare un audit Lighthouse superato come prova di un buon TTFB sul campo e non allarmarti perché 600 < 800: le soglie misurano cose diverse.

Una nota sulla versione: da Lighthouse 13 questo audit non è più autonomo, ma è stato incluso nell’insight più ampio «Document request latency». Il controllo sottostante del tempo di risposta server di ~600 ms è lo stesso; viene solo mostrato in modo diverso a seconda della versione Lighthouse che ha generato il report.

Sul campo e in laboratorio — entrambi

TTFB è una delle metriche che puoi leggere in entrambi i mondi. Sul campo proviene da CrUX (utenti Chrome reali) ed è mostrato in PageSpeed Insights e Search Console. In laboratorio, Chrome DevTools lo etichetta «Waiting (TTFB)» nel waterfall del pannello Network («il browser sta aspettando il primo byte della risposta»), e lo riportano anche strumenti come WebPageTest e Lighthouse. Una cautela sul campo: in CrUX TTFB è ancora considerato in parte sperimentale — esclude alcuni tipi avanzati di navigazione, come navigazioni prerenderizzate e dalla back/forward cache, quindi le medie sul campo possono essere un po’ pessimistiche rispetto a ciò che gli utenti percepiscono davvero.

Un TTFB alto non significa sempre un sito lento

Ecco la sfumatura che i numeri delle soglie nascondono. Una pagina renderizzata dal server può avere un TTFB più alto di una pagina renderizzata dal client e fornire comunque FCP e LCP migliori, perché quando arriva quel primo byte è HTML completo che il browser può disegnare subito, invece di un guscio sottile che deve poi recuperare ed eseguire un bundle JavaScript prima che compaia qualcosa. Google lo dice direttamente: «a server-rendered site that does not require as much client-side work could have a higher TTFB, but better FCP and LCP values than an entirely client-rendered experience» («un sito renderizzato dal server che non richiede altrettanto lavoro lato client potrebbe avere un TTFB più alto, ma valori FCP e LCP migliori rispetto a un’esperienza interamente renderizzata dal client»).

Il rovescio della medaglia: in una single-page app renderizzata dal client, TTFB determina quando il bundle JavaScript inizia persino a caricarsi, quindi un TTFB basso conta di più, non di meno. Non ottimizzare TTFB nel vuoto: ottimizza l’intera catena di caricamento e giudica TTFB da ciò che fa a FCP e LCP.

Come migliorare TTFB

Approssimativamente in ordine di priorità:

  • Inizia dall’hosting. Un backend lento o una query al database è un costo su ogni richiesta e nessuna quantità di lavoro frontend lo elimina. È la prima cosa da considerare.
  • Usa una CDN. Una CDN risolve il problema della prossimità: una rete distribuita di server edge memorizza le risorse nella cache fisicamente più vicine agli utenti, riducendo il costo della distanza e dell’handshake TLS. È la correzione con il miglior ROI per la maggior parte dei siti, perché la distanza geografica dall’origine è un costo strutturale che nulla nel backend può cancellare. La cautela: per contenuti completamente dinamici e personalizzati che non possono essere messi in cache, una CDN aggiunge un passaggio senza il vantaggio di un cache hit; lì servono ottimizzazione backend, edge compute o streaming.
  • Metti in cache l’HTML, anche brevemente. Anche un tempo di cache breve aiuta sensibilmente un sito trafficato: solo il primo visitatore della finestra paga tutta la latenza verso l’origine, gli altri ricevono la copia in cache.
  • Elimina i redirect. I redirect contribuiscono spesso a un TTFB alto: ognuno è un viaggio di andata e ritorno prima che inizi la risposta reale. Riduci quelli sotto il tuo controllo.
  • Trasmetti il markup al browser. I browser elaborano il markup in modo efficiente quando arriva in blocchi. Molti framework SSR supportano lo streaming ma lo lasciano disattivato; abilitarlo può ridurre TTFB sulle pagine dinamiche senza alcun cambiamento all’infrastruttura.
  • Usa 103 Early Hints. Il codice di stato 103 è una risposta preliminare che il server può inviare mentre il backend sta ancora preparando il markup, suggerendo al browser di iniziare presto a scaricare le risorse critiche per il rendering. Non abbassa TTFB in sé — anzi, un 103 può contare come «primo byte» — ma riduce l’impatto di un TTFB alto. Shopify e Cloudflare hanno riferito miglioramenti LCP di diverse centinaia di millisecondi, in alcuni casi quasi un secondo.
  • Negozia TLS in modo efficiente e ottimizza l’avvio del service worker. Un service worker non ancora avviato aggiunge il proprio tempo di avvio a TTFB; una volta attivo, la sua cache (stale-while-revalidate o un modello app-shell per le SPA) può ridurre drasticamente TTFB.

Dove si trovano davvero i siti

Vale la pena prestare attenzione perché è un problema ostinato sul web. Il tasso di TTFB buono mobile del Web Almanac è cambiato appena in cinque anni — resta intorno al 41–42% — quindi la maggior parte dei siti mobile non ha ancora un TTFB «buono». Questa stagnazione è, francamente, un’opportunità. Per un sito pesante lato server che non supera LCP, TTFB è di solito la correzione con la leva più alta.

Questa pagina fa parte del cluster web-performance, che si trova sotto Core Web Vitals. Per le metriche alimentate da TTFB, consulta Largest Contentful Paint e First Contentful Paint; per misurarlo su utenti reali e in laboratorio, consulta CrUX, PageSpeed Insights e Lighthouse.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.