HTTP 304 Not Modified
O validador de cache: nada mudou desde sua última visita, continue usando a cópia que você já tem.
O que significa o HTTP 304
HTTP 304 Not Modified é a resposta a uma requisição condicional. O cliente diz "eu tenho uma cópia desta data" (If-Modified-Since) ou "com esta impressão digital" (If-None-Match), e o servidor confirma que a cópia ainda está atual respondendo 304 sem corpo.
Esse mecanismo — revalidação de cache — é o que torna os carregamentos de página repetidos rápidos: o navegador baixa novamente apenas o que mudou, e tudo o mais custa uma única e pequena ida e volta.
Causas comuns de respostas 304
- O navegador revalidou uma página, script ou imagem em cache e ele não havia mudado.
- Uma edge de CDN revalidou seu objeto armazenado em relação à origem.
- Um cliente de API usou ETags para consultar um recurso de forma econômica.
Boas práticas para desenvolvedores
- Sirva cabeçalhos ETag ou Last-Modified estáveis para que os clientes possam revalidar de fato.
- Não inclua um corpo de resposta com 304 — o cliente explicitamente já o tem.
- Cuidado com ETags que mudam a cada resposta (por exemplo, de servidores balanceados por carga com hashes por nó): eles desativam silenciosamente a revalidação.
Exemplo de resposta
GET /styles.css HTTP/1.1 If-None-Match: "abc123" HTTP/1.1 304 Not Modified ETag: "abc123" Cache-Control: max-age=3600
Impacto no SEO
Respostas 304 são boas para o desempenho de SEO: o Googlebot usa requisições condicionais intensamente, e a revalidação correta permite que ele rastreie mais do seu site com o mesmo orçamento. Validadores quebrados forçam novos downloads completos a cada rastreamento.
Perguntas frequentes
Uma resposta 304 é um erro?
Não — é um sinal de sucesso significando que sua cópia em cache ainda é válida. Os navegadores o tratam de forma transparente.
O que dispara uma resposta 304?
Uma requisição carregando cabeçalhos If-None-Match ou If-Modified-Since cujos valores ainda correspondem ao recurso atual.
Por que vejo 304 no DevTools em vez de 200?
O navegador tinha uma cópia em cache e a revalidou. O status mostra que o servidor confirmou o cache em vez de reenviar o arquivo.