err_cache_miss no Chrome: o que significa e como resolver

Publicado:

17 min de leitura

Acar Diveroli
Autor: Acar Diveroli
Grande -400 sobre ERR_CACHE_MISS e Confirm Form Resubmission; à direita, uma fita azul com uma volta faltando, tracejada

Você acabou de enviar um formulário: um pedido, uma reserva de hotel, um comentário ou uma busca com filtros. Na página que aparece, você clica em um link e depois em Voltar para vê-la de novo, mas no lugar da página o Chrome mostra a própria página de erro com o título "Confirmar reenvio do formulário" e, em letras pequenas no final, ERR_CACHE_MISS. Ao recarregar, aparece uma caixa de diálogo perguntando se você quer continuar. Desenvolvedores encontram o mesmo código em outros lugares: Failed to load resource: net::ERR_CACHE_MISS no console, ou um aplicativo Android cujo navegador integrado não mostra nada além desse código.

A seguir: o que o código significa, o que a página diz, como um clique em Voltar termina ali, as causas que reproduzimos, quando é seguro enviar um formulário de novo, as soluções no Chrome, no Edge e no Android, e o que donos de sites e desenvolvedores de aplicativos mudam.

O que significa ERR_CACHE_MISS?

Significa que uma requisição que só podia ser respondida pelo cache do Chrome não encontrou nada lá. O cache é a pasta onde o navegador guarda cópias de páginas, imagens e scripts que já baixou, para que abram mais rápido da próxima vez. A lista de erros de rede do Chromium dá ao código o número -400 e uma única linha: The cache does not have the requested entry. (O cache não tem a entrada solicitada.) Os números de -400 a -499 são reservados para erros de cache.

O código não diz nada sobre a sua conexão, e não foi o site que o enviou. Chrome, Edge, Brave e Opera compartilham o código de rede do Chromium e o mostram do mesmo jeito, assim como os aplicativos Android que exibem páginas web em uma visualização web (WebView).

O motivo comum para o Chrome se limitar ao cache é um formulário. Enviar um formulário gera uma requisição POST: o navegador entrega ao servidor os dados que você digitou, e o servidor age com base neles, reservando o quarto, publicando o comentário ou cobrando o cartão. Carregar essa página de novo pela rede significaria enviar os dados outra vez, então, com Voltar e Avançar, o Chrome só pode usar a cópia que já tem.

O que a página de erro diz?

Reproduzimos o erro no Chromium 145 com um pequeno formulário de teste na nossa própria máquina: enviar o formulário, abrir outra página, clicar em Voltar. A página mostrou exatamente estas linhas; aqui elas aparecem com o texto do Chrome em português, tirado dos arquivos de idioma do Chromium (no Chrome em inglês, o título é "Confirm Form Resubmission"):

Linha na telaO que significa
"Confirmar reenvio do formulário"O título quando falta a cópia do resultado de um formulário
"Esta página da Web requer os dados inseridos anteriormente para ser exibida de modo correto. É possível enviá-los novamente mas, ao fazer isso, você repete qualquer ação realizada anteriormente na página."O Chrome teria de enviar o seu formulário de novo
“Pressione o botão "Atualizar" para reenviar os dados necessários para carregar a página.”A única saída que o Chrome oferece
ERR_CACHE_MISSO código

A página não tem botão próprio; a recarga que ela menciona é o botão Recarregar esta página do navegador ou a tecla F5. Clicar nele abre uma caixa de diálogo com o mesmo título e o texto "A página que você está procurando usou as informações inseridas. Voltar à essa página poderá fazer com que todas as ações realizadas antes sejam repetidas. Quer continuar?" Selecionar Continuar envia o formulário de novo. Tiramos esse texto do código-fonte do Chromium, já que um navegador automatizado recarrega sem mostrar o diálogo.

Se o código aparece em uma página que não era resultado de um formulário, o Chromium usa no lugar a sua página geral de cache: "Não é possível carregar este site a partir do cache", a linha "Não foi possível ler a cópia armazenada em cache deste site." e um botão Recarregar. Essa variante é mais rara e aponta para um cache esvaziado ou danificado, e não para um formulário.

Como um clique em Voltar termina em ERR_CACHE_MISS?

  1. Você envia um formulário. O Chrome envia uma requisição POST com os seus dados; o servidor executa a ação e devolve uma página de resultado, por exemplo "Pedido recebido".
  2. O Chrome guarda uma cópia. O resultado vai para o cache do navegador, ligado àquela entrada no histórico da guia, a menos que o site tenha enviado Cache-Control: no-store, o cabeçalho de resposta que diz aos navegadores para não guardar uma página de jeito nenhum.
  3. Você segue em frente. Você clica em um link na página de resultado ou abre outro endereço na mesma guia.
  4. Você clica em Voltar. Para uma entrada do histórico criada por um formulário, o Chrome lê apenas do cache e pula a verificação habitual de uma versão mais nova. O padrão de cache do HTTP, a RFC 9111, permite exatamente isso: o histórico de um navegador pode mostrar uma cópia anterior mesmo depois de ela expirar, e pode respeitar o no-store.
  5. A cópia está lá, ou não. Se estiver, a página aparece na hora e nada é enviado. Se não estiver, o Chrome para em ERR_CACHE_MISS e deixa a decisão com você.

O nosso servidor de teste mudou uma coisa de cada vez:

O que o site enviou com a página de resultadoVoltar depois de sair delaO formulário foi reenviado?
Nenhum cabeçalho de cachePágina de resultado exibida a partir do cacheNão
Cache-Control: private, max-age=600Página de resultado exibida a partir do cacheNão
Cache-Control: no-storeERR_CACHE_MISSNão
Nenhum cabeçalho de cache, cache esvaziado antes de VoltarERR_CACHE_MISSNão
Um redirecionamento 303 para uma página comumEssa página carrega de novoNão

Por quanto tempo uma página podia ser guardada não fez diferença; só "não guarde" e um cache esvaziado fizeram. A primeira linha continuou igual com o cache de voltar e avançar do Chrome (back/forward cache: páginas recentes inteiras mantidas na memória) desligado: a cópia veio do cache em disco.

O que causa ERR_CACHE_MISS?

  • O site pede aos navegadores que não guardem a página. Bancos, páginas de pagamento, páginas de conta e formulários de login costumam enviar no-store de propósito, para que a próxima pessoa no mesmo computador não consiga abrir a página a partir do disco. Nesses sites, o erro depois de Voltar é esperado.
  • A cópia salva sumiu. Excluir as imagens e os arquivos em cache, um programa de limpeza que esvazia os caches do navegador em horários programados, ou o próprio Chrome descartando entradas antigas quando o cache fica cheio: tudo isso remove a cópia que o Voltar teria usado.
  • Um script pediu uma resposta só do cache. Uma página web que chama fetch() com cache: "only-if-cached" para um endereço que não está no cache falha com o mesmo código.
  • A visualização web de um aplicativo Android está limitada ao cache. Os aplicativos exibem páginas web pelo componente WebView do Android; quando o aplicativo não tem a permissão de internet, ou configurou a visualização web para ler apenas do cache, toda página que ainda não foi salva falha com ERR_CACHE_MISS.
  • Um cache danificado, raramente. Os desenvolvedores do Chromium observam que a página de cache geralmente aparece depois que o cache em disco foi corrompido por um desligamento incorreto.

É seguro enviar o formulário de novo?

Depende do que o formulário fez, e só você sabe disso. Enviá-lo de novo repete a requisição exatamente como antes, então o servidor executa a ação uma segunda vez, a menos que o próprio site verifique duplicatas.

Formulário que você enviouEnviar de novo?
Busca, filtro ou ordenaçãoSim; nada muda no servidor
LoginGeralmente sim; você só faz login de novo
Comentário, mensagem ou formulário de contatoPode ser publicado ou enviado duas vezes
Pedido, pagamento, reserva ou transferência de dinheiroNão antes de verificar a sua conta ou o seu e-mail

Se não tiver certeza, não envie de novo. Abra a página do próprio site para o que você fez, como o histórico de pedidos, as mensagens enviadas ou a lista de reservas, e verifique se a primeira tentativa deu certo.

Como resolver ERR_CACHE_MISS no Chrome?

Na maioria das vezes, um dos dois primeiros passos basta.

  1. Envie o formulário de novo, se isso for inofensivo. Selecione Recarregar esta página no canto superior esquerdo ou pressione F5 (no Windows, Ctrl + R também funciona) e depois selecione Continuar na caixa de diálogo "Confirmar reenvio do formulário".
  2. Ou siga em frente sem enviar. Clique no logotipo do site ou digite o endereço dele e abra pelo menu a página de que precisa; ela carrega com uma requisição comum e mostra a situação atual, como o pedido que você já fez.
  3. Teste em uma janela anônima se o erro aparecer em páginas que não eram resultados de formulários. Selecione Mais > Nova janela anônima e abra o mesmo site; se funcionar ali, desative as extensões uma por uma em Mais > Extensões > Gerenciar extensões.
  4. Exclua as imagens e os arquivos em cache. Selecione Mais > Excluir dados de navegação (ou pressione Ctrl + Shift + Delete; ⌘ + Shift + Delete no Mac), escolha um intervalo como Todo o período, marque Imagens e arquivos em cache, desmarque Cookies e outros dados de sites se quiser continuar conectado e selecione Excluir dados. A página de ajuda do Google sobre como excluir dados de navegação explica cada opção. Isso resolve a variante "Não é possível carregar este site a partir do cache", mas não traz de volta o resultado de um formulário, porque exclui justamente a cópia de que o Voltar precisa.
  5. Atualize o Chrome. Selecione Mais > Ajuda > Sobre o Google Chrome e, se aparecer, Reiniciar.

No Microsoft Edge

O Edge roda no mesmo motor Chromium, mostra o mesmo código e segue os mesmos passos. Para limpar o cache dele, selecione Configurações e mais > Configurações > Privacidade, pesquisa e serviços, depois Limpar dados de navegação e Escolher o que limpar ao lado de "Limpar dados de navegação agora". Escolha um Intervalo de tempo, marque Arquivos e imagens em cache e selecione Limpar agora.

No Android

No Chrome para Android, recarregue a página e confirme, ou abra o site de novo pelo endereço. Para limpar o cache, toque em Mais à direita da barra de endereço, depois em Excluir dados de navegação, toque em Mais opções, marque Imagens e arquivos em cache e toque em Excluir dados.

Quando o erro aparece dentro de outro aplicativo, e não no Chrome, ele vem da visualização web desse aplicativo. Verifique se o celular está online, abra o mesmo link no Chrome para comparar e atualize o aplicativo; se continuar acontecendo, só o desenvolvedor do aplicativo pode corrigir.

Como donos de sites e desenvolvedores evitam o erro?

  1. Redirecione depois de cada formulário (Post/Redirect/Get). Depois de processar o formulário, responda com um 303 See Other que aponte para uma página comum com o resultado, em vez de devolver a página de resultado diretamente. A RFC 9110 cita esse como o principal uso do código de status 303. Voltar e Recarregar passam a pedir essa página com GET, que pode ser repetido com segurança. No nosso servidor de teste, o manipulador do formulário precisou de duas linhas:
js
res.writeHead(303, { Location: "/done" });
res.end();
  1. Aponte o redirecionamento para outra página. Um endereço de resultado que redireciona para si mesmo, ou de volta para o manipulador do formulário, fica dando voltas até o Chrome desistir com um erro de loop; Resolva err_too_many_redirects mostra como encontrar esse loop.
  2. Mantenha o no-store onde ele protege dados. Com Post/Redirect/Get, a página de resultado é uma página GET comum, então uma página de pagamento pode manter o no-store e o Voltar simplesmente a carrega de novo.
  3. Torne a repetição inofensiva. Dê a cada formulário um token de uso único e ignore um segundo envio com o mesmo token, para que um visitante que seleciona Continuar não crie um segundo pedido.

Em JavaScript e na automação de navegador

fetch(url, { cache: "only-if-cached", mode: "same-origin" }) responde apenas a partir do cache. Para um endereço que não estava em cache, o Chromium 145 registrou Failed to load resource: net::ERR_CACHE_MISS e rejeitou a promise com TypeError: Failed to fetch; o MDN descreve uma resposta 504 no lugar, então trate os dois casos. No nosso teste, o page.goBack() do Playwright também falhou com net::ERR_CACHE_MISS na página de resultado com no-store.

Em um WebView do Android

Um WebView só consegue carregar páginas da rede se o aplicativo pedir a permissão de internet no manifesto com <uses-permission android:name="android.permission.INTERNET" />. A referência de WebSettings do Android diz que os carregamentos de rede são bloqueados por padrão quando essa permissão falta, e o código do WebView do Chromium transforma esse bloqueio em carregamento só do cache, então já a primeira página falha com ERR_CACHE_MISS.

A segunda coisa a verificar é o setCacheMode. LOAD_CACHE_ONLY significa Don't use the network, load from the cache (não usar a rede, carregar do cache), o que serve para um modo offline, mas falha para tudo o que ainda não foi salvo; LOAD_DEFAULT é a configuração normal.

Qual a diferença entre ERR_CACHE_MISS e erros parecidos?

CódigoNúmeroO que significa
ERR_CACHE_MISS-400Nenhuma cópia salva onde só uma cópia salva era permitida
ERR_CACHE_READ_FAILURE-401Existe uma cópia salva, mas ela não pôde ser lida
ERR_INTERNET_DISCONNECTED-106O dispositivo não tem conexão de rede
ERR_TOO_MANY_REDIRECTS-310Os redirecionamentos ficaram dando voltas em um loop
ERR_PROXY_CONNECTION_FAILED-130O Chrome não conseguiu alcançar o servidor proxy configurado no dispositivo

Leia primeiro o código no pé da página de erro; ele nomeia o problema com mais precisão do que o título. Um código de proxy aponta para uma configuração de proxy no seu dispositivo, um caso tratado em O que é err_proxy_connection_failed e como resolver.

Um proxy não causa o ERR_CACHE_MISS: a cópia salva fica no seu próprio navegador, e em um site HTTPS um proxy só repassa tráfego criptografado que não consegue ler nem guardar. O que um proxy pode mudar é a repetição. Com os Proxies residenciais em sessões rotativas, um formulário enviado de novo pode sair por um endereço IP diferente do da primeira vez, então use uma sessão fixa, que mantém um endereço por 1 a 60 minutos, para logins e finalizações de compra.

Onde você pode encontrar esse erro

  • Ao clicar em Voltar depois de uma página de finalização de compra, de reserva ou de pagamento.
  • Em páginas de banco e de conta que nunca são guardadas em disco.
  • Em formulários de busca e de filtro de lojas e sites de vagas que enviam os dados com POST.
  • Em links abertos dentro de aplicativos que exibem páginas web por meio de uma visualização web.

Erros comuns

  • Limpar o cache para recuperar o resultado de um formulário. Isso exclui a cópia que o Voltar teria mostrado.
  • Selecionar Continuar depois de um pagamento sem verificar. O site pode processá-lo duas vezes.
  • Redefinir a rede ou trocar o DNS. Esse erro nunca chega à rede.
  • Reinstalar o Chrome. O navegador está fazendo exatamente aquilo para que foi feito.
  • Remover o no-store de páginas sensíveis. Em vez disso, adicione um redirecionamento depois do formulário.
  • Publicar um aplicativo com WebView sem a permissão de internet. Toda página que não está em cache falha.

Guia de decisão

SituaçãoO que fazer
Depois de Voltar, em um resultado de busca ou filtroRecarregue e selecione Continuar
Depois de Voltar, em um pedido ou pagamentoVerifique a sua conta ou o seu e-mail; não envie de novo
Em páginas que não eram resultados de formuláriosTeste na janela anônima e depois exclua as imagens e os arquivos em cache
"Não é possível carregar este site a partir do cache"Exclua as imagens e os arquivos em cache e atualize o Chrome
Dentro de um aplicativo AndroidCompare no Chrome, atualize o aplicativo e avise o desenvolvedor
O seu próprio site mostra o erro depois de um formulárioPost/Redirect/Get com um 303
O seu aplicativo com WebView falha na primeira páginaAdicione a permissão de internet e verifique o modo de cache

Perguntas frequentes

O ERR_CACHE_MISS é perigoso?

Não. É uma parada de segurança, não um ataque nem um vírus: o Chrome se recusa a repetir algo que você fez sem perguntar antes. O único risco está em reenviar um formulário que cobra dinheiro ou envia uma mensagem.

Por que o ERR_CACHE_MISS aparece no YouTube ou no Facebook?

O código não tem nada a ver com esses serviços em si. No navegador, é o mesmo caso de Voltar depois de um formulário que em qualquer site; dentro de um aplicativo, a visualização web do aplicativo não conseguiu carregar a página pela rede e não encontrou nenhuma cópia salva. Recarregue, verifique a sua conexão e abra o link no Chrome para comparar.

Como resolver ERR_CACHE_MISS no Android?

No Chrome, recarregue e confirme, ou abra o site de novo pelo endereço. Se acontecer dentro de outro aplicativo, atualize esse aplicativo; uma permissão que falta ou uma configuração de só cache no código dele só pode ser corrigida pelo desenvolvedor.

O Microsoft Edge também mostra ERR_CACHE_MISS?

Sim. O Edge roda no Chromium e mostra o mesmo código pelos mesmos motivos, e as mesmas soluções valem.

Se eu enviar um formulário de pagamento de novo, vou ser cobrado duas vezes?

Pode ser. Alguns sites detectam um pedido duplicado e o bloqueiam, mas não dá para saber de fora, então verifique o aplicativo do banco, o seu e-mail ou o histórico de pedidos antes de selecionar Continuar.

Limpar o cache resolve ERR_CACHE_MISS?

Só na variante mais rara, a que diz que o site não pode ser carregado a partir do cache. Em uma página "Confirmar reenvio do formulário", faz o contrário, porque exclui a cópia que o Chrome teria mostrado.

Em resumo

ERR_CACHE_MISS significa que o Chrome precisava de uma cópia salva de uma página e não tinha nenhuma, quase sempre de um resultado de formulário alcançado com Voltar. Reenvie formulários inofensivos, verifique pedidos e pagamentos primeiro e limpe o cache só quando o erro não tiver a ver com um formulário. Donos de sites evitam o erro com um redirecionamento 303 depois de cada formulário; desenvolvedores Android verificam a permissão de internet e o modo de cache do WebView. Se você trabalha com proxies, nossa página de proxies explica as sessões rotativas e fixas.