HTTP 304 Not Modified: o que significa
RESPOSTA DIRETA
HTTP 304 Not Modified significa que um cliente fez uma solicitação condicional `GET` ou `HEAD` e que a representação armazenada em cache ainda está atualizada. O servidor informa ao cliente que reutilize a resposta armazenada, em vez de enviar novamente o corpo do recurso. Normalmente, é uma resposta de cache esperada, não uma evidência de que o site inteiro está fora do ar.
Pontos principais
- HTTP 304 é retornado para uma solicitação condicional quando a representação armazenada não foi alterada.
- Normalmente, está associado a solicitações
GETouHEADe não inclui um corpo de resposta. - Ao investigar o resultado, verifique
ETag,Last-Modified,If-None-MatcheIf-Modified-Since. - Um navegador geralmente trata o 304 automaticamente, carregando sua cópia em cache; clientes de API e ferramentas de monitoramento podem exibi-lo diretamente.
- Confirme a URL exata, o método, os cabeçalhos da solicitação e a camada que produz a resposta antes de alterar a configuração de cache ou do servidor.
Site Administrator
Última revisão: September 25, 2026
O que este erro significa e como reconhecê-lo
- Uma ferramenta de desenvolvedor do navegador, cliente de API, ferramenta de monitoramento ou verificador informa o status
304 Not Modified. - A resposta contém cabeçalhos de cache ou validadores, mas não contém o corpo do recurso.
- Um navegador pode exibir a página normalmente porque reutiliza sua representação armazenada em cache.
- Um cliente de API ou verificador pode aparentar receber uma resposta vazia se não implementar corretamente o cache condicional.
- O resultado pode se aplicar a uma URL ou recurso específico, e não ao site inteiro.
- DNS e TLS ainda podem estar funcionando, pois o cliente alcançou um endpoint HTTP e recebeu uma resposta HTTP.
Causas principais, por probabilidade
- O cliente enviou uma solicitação condicional. Cabeçalhos de solicitação como
If-None-MatchouIf-Modified-Sinceperguntaram se a representação armazenada em cache ainda estava atualizada. - O recurso não foi alterado. O servidor ou um intermediário correspondeu o validador fornecido, como um valor
ETagouLast-Modified, e retornou 304 corretamente. - Um navegador, proxy ou CDN realizou a validação normal do cache. A resposta pode ter sido gerada por um intermediário, e não pela aplicação de origem.
- Um cliente ou ferramenta de monitoramento expôs uma resposta normal de cache como erro. Algumas ferramentas são configuradas para esperar um corpo de resposta completo e podem não reutilizar sua cópia armazenada.
- A configuração de validadores ou do cache é inconsistente. Resultados inesperados podem ocorrer quando implantações da aplicação, regras de proxy ou cabeçalhos da origem produzem validadores de cache obsoletos, conflitantes ou abrangentes demais.
HTTP 304, por si só, não é um redirecionamento, uma falha de autenticação, uma resposta de limite de taxa ou uma interrupção do servidor. Essas condições devem ser confirmadas a partir do status, dos cabeçalhos e dos logs reais, em vez de serem inferidas a partir do 304.
Como corrigir
Para visitantes
- Deixe o navegador tratar a resposta primeiro. Um navegador normal deve usar sua cópia armazenada em cache ao receber 304. Se a página estiver correta, normalmente nenhuma ação será necessária.
- Verifique a URL exata. Confirme o hostname, o caminho, a query string e o protocolo. URLs diferentes podem ter representações armazenadas em cache separadas.
- Tente novamente uma vez se o conteúdo exibido estiver desatualizado ou incompleto. Use os controles normais de recarregamento do navegador, em vez de atualizar repetidamente.
- Compare com outro cliente somente quando for útil. Se um navegador exibir conteúdo desatualizado e outro não, registre a URL afetada, o horário aproximado e o comportamento do cliente para o responsável pelo site.
- Entre em contato com o responsável pelo site se o recurso não puder ser carregado. Informe a URL e o horário, mas não compartilhe senhas, cookies, cabeçalhos de autorização ou outros dados privados.
Para desenvolvedores e responsáveis pelo site
- Capture o contexto completo da solicitação e da resposta. Registre o método HTTP, a URL completa incluindo os parâmetros de consulta relevantes, o status, os validadores da solicitação, os validadores da resposta,
Cache-Control,Varye quaisquer cabeçalhos de proxy ou CDN. Remova credenciais e dados pessoais antes de compartilhar. - Confirme que a solicitação é condicional. Procure
If-None-MatchouIf-Modified-Since. Um 304 normalmente é significativo quando o cliente tem uma representação armazenada em cache para validar. - Verifique a camada que produz a resposta. Determine se o 304 veio do navegador, de um proxy local ou compartilhado, CDN, proxy reverso, servidor web ou aplicação. Quando disponível, use o identificador da solicitação e o horário dessa camada.
- Compare os validadores com o recurso. Verifique se
ETagouLast-Modifiedrepresenta corretamente a representação solicitada e se a negociação de conteúdo é coberta por uma políticaVaryapropriada, quando relevante. - Teste uma solicitação não condicional quando precisar do corpo atual. Use um cliente de diagnóstico autorizado ou omita temporariamente os cabeçalhos de solicitação condicionais em um teste controlado. Essa é uma comparação somente de leitura, mas siga os controles normais de acesso do serviço e evite enviar cabeçalhos confidenciais a ferramentas não confiáveis.
- Revise alterações recentes no cache e nas implantações. Verifique releases da aplicação, geração de assets, regras de proxy ou CDN, compactação e negociação de conteúdo, roteamento e comportamento de invalidação do cache. Concentre-se nas alterações que afetam a rota específica, em vez de mudar imediatamente as configurações globais.
- Aplique a correção segura mais restrita. Corrija o validador, a política de cache ou a regra do intermediário somente depois de identificar a inconsistência. Evite desativar o cache globalmente quando apenas uma rota ou representação for afetada.
- Teste novamente o mesmo caminho da solicitação. Teste uma solicitação condicional e uma solicitação nova e, em seguida, confirme que as rotas e os métodos de solicitação relacionados continuam retornando os status e as representações esperados.
Prevenção e como verificar a correção
- Trate o 304 como um resultado esperado da validação de cache no monitoramento, a menos que o cliente não consiga usar sua representação armazenada em cache.
- Teste rotas importantes com solicitações comuns e condicionais após as implantações.
- Mantenha o comportamento de
ETag,Last-Modified,Cache-ControleVaryintencional e documentado. - Garanta que os validadores de cache sejam alterados quando a representação servida mudar, incluindo variantes relevantes de negociação de conteúdo.
- Monitore as taxas de status por rota e por camada de cache para que um padrão inesperado de 304 seja distinguível do tráfego normal de navegadores.
- Mantenha, quando possível, a configuração de proxy, CDN, servidor web e aplicação sob controle de versão.
- Retenha identificadores de solicitação e horários sanitizados por tempo suficiente para associar um relatório à camada que gerou a resposta.
Quando buscar ajuda externa
Encaminhe o caso ao responsável pelo site, CDN ou infraestrutura quando o 304 causar conteúdo desatualizado ou ausente, aparecer em uma rota que não deveria ser validada pelo cache, afetar muitos clientes ou não puder ser atribuído a uma camada específica. Forneça a URL sanitizada, o método, os cabeçalhos de validadores da solicitação e da resposta, o horário, os detalhes do cliente e o identificador de solicitação relevante. Não compartilhe senhas, cookies, cabeçalhos de autorização, chaves de API ou dados pessoais.
Perguntas frequentes
HTTP 304 é um erro?
Geralmente, não. É uma resposta de validação de cache que informa ao cliente que sua representação armazenada ainda pode ser usada. Uma ferramenta pode classificá-la como erro apenas porque esperava um corpo de resposta ou um status diferente.
O HTTP 304 inclui a página ou o arquivo solicitado?
Não. A resposta informa ao cliente que reutilize sua representação armazenada em cache, em vez de enviar novamente o corpo do recurso. Um cliente que não tenha uma cópia utilizável em cache pode não conseguir exibir o recurso corretamente.
Quais cabeçalhos de solicitação causam uma resposta 304?
Os cabeçalhos de solicitação condicional usuais são If-None-Match e If-Modified-Since. Eles são avaliados em relação a validadores da resposta, como ETag e Last-Modified.
Por que meu navegador exibe uma página se o servidor retornou 304?
O navegador usa a representação armazenada em cache associada à solicitação. A resposta 304 confirma que a cópia armazenada em cache pode ser reutilizada.
Uma API deve retornar 304 em vez de JSON?
Ela pode fazer isso para um GET condicional quando a representação não tiver sido alterada, mas o cliente da API precisa oferecer suporte a cache condicional. Se o cliente exigir um corpo para cada solicitação, revise o tratamento de cache e dos cabeçalhos de solicitação.
Como investigar um 304 inesperado?
Capture o método, a URL exata, os cabeçalhos de solicitação condicional, os validadores da resposta e os cabeçalhos relacionados ao cache. Em seguida, identifique se o navegador, CDN, proxy, servidor web ou aplicação gerou a resposta e compare-a com uma solicitação nova controlada.
Documentação adicional
- MDN Web Docs — HTTP 304 Not Modified: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304
- RFC 9110 — HTTP Semantics: https://www.rfc-editor.org/rfc/rfc9110
Para detalhes de implementação, consulte as seções sobre cache HTTP e solicitações condicionais da documentação relevante sobre semântica HTTP, além da documentação do servidor web, proxy reverso, CDN ou framework que produz a resposta.