O que é TTFB?
TTFB é uma métrica que mede o tempo entre a solicitação de um recurso e quando o primeiro byte de uma resposta começa a chegar.
TTFB é a soma das seguintes fases de solicitação:
- Tempo de redirecionamento
- Tempo de inicialização do service worker (se aplicável)
- busca DNS
- Conexão e negociação de TLS
- Solicitação, até o ponto em que o primeiro byte da resposta chegou
A redução da latência no tempo de configuração da conexão e no back-end contribuirá para um TTFB menor.
O que é uma boa pontuação de TTFB?
Como o TTFB precede as métricas centradas no usuário, como Primeira exibição de conteúdo (FCP) e Maior exibição de conteúdo (LCP), é recomendável que seu servidor responda às solicitações de navegação com rapidez suficiente para que o 75o percentil dos usuários tenha uma FCP dentro do limite "bom". Como guia, a maioria dos sites deve ter um tempo até o primeiro byte de 0,8 segundo ou menos.
Como medir o TTFB
O TTFB pode ser medido no laboratório ou em campo das seguintes maneiras.
Ferramentas de campo
Ferramentas de laboratório
- No painel de rede do DevTools do Chrome
- WebPageTest
Medir TTFB em JavaScript
É possível medir o TTFB das solicitações de navegação no navegador com a API Navigation Timing. O exemplo a seguir mostra como criar um PerformanceObserver
que detecta uma entrada navigation
e a registra no console:
new PerformanceObserver((entryList) => {
const [pageNav] = entryList.getEntriesByType('navigation');
console.log(`TTFB: ${pageNav.responseStart}`);
}).observe({
type: 'navigation',
buffered: true
});
A biblioteca JavaScript web-vitals
também pode medir o TTFB no navegador com menos complexidade:
import {onTTFB} from 'web-vitals';
// Measure and log TTFB as soon as it's available.
onTTFB(console.log);
Medir as solicitações de recursos
O TTFB se aplica a todas as solicitações, não apenas às de navegação. Recursos hospedados em servidores de origem cruzada podem gerar latência devido à necessidade de configurar conexões com eles. Para medir o TTFB para recursos no campo, use a API Resource Timing em uma PerformanceObserver
:
new PerformanceObserver((entryList) => {
const entries = entryList.getEntries();
for (const entry of entries) {
// Some resources may have a responseStart value of 0, due
// to the resource being cached, or a cross-origin resource
// being served without a Timing-Allow-Origin header set.
if (entry.responseStart > 0) {
console.log(`TTFB: ${entry.responseStart}`, entry.name);
}
}
}).observe({
type: 'resource',
buffered: true
});
O snippet de código acima é semelhante ao usado para medir o TTFB para uma solicitação de navegação, exceto que, em vez de consultar entradas 'navigation'
, você consulta entradas 'resource'
. Ela também considera o fato de que alguns recursos carregados da origem principal podem retornar um valor 0
, já que a conexão já está aberta ou um recurso é recuperado instantaneamente de um cache.
Como melhorar o TTFB
Um guia detalhado sobre como otimizar o TTFB foi publicado com mais orientações sobre como melhorar a TTFB do seu site.