O que é o cache? Por que acontece o «atualizei mas nada mudou»? ── Por que a segunda visita é mais rápida, e como consertar o efeito colateral

Talvez isso já tenha acontecido com você. Você finalmente atualizou o site da empresa ── mas, ao abrir, a versão antiga continua lá, olhando para você. Ou o contrário: avisam que «o site já foi corrigido», e nada mudou na sua tela. Você pesquisa ou pergunta ao suporte, e a resposta é quase sempre a mesma: «Limpe o cache, por favor». Você limpa e, de fato, funciona. Mas pouquíssima gente sabe explicar o que acabou de apagar, ou por que apagar resolveu.

Este artigo explica do zero o que o cache realmente é. O mapa inteiro em uma linha: o cache é o próprio motivo de a mesma página abrir mais rápido na segunda vez, e o incidente «atualizei mas nada mudou» é o efeito colateral que se paga por essa velocidade. Os dois são frente e verso do mesmo mecanismo. Se algo disto soa familiar, continue lendo.

  • Um site foi atualizado mas continuou mostrando a versão antiga ── na sua tela ou na dos visitantes
  • Dizem para você «limpar o cache» mas você não saberia explicar o que isso realmente faz
  • Você nunca se perguntou por que a mesma página abre visivelmente mais rápido na segunda vez
  • Você limpa o cache com receio, sem saber se vai ser deslogado de tudo

Para ficar acessível a iniciantes, este artigo pega leve no jargão. E não para no funcionamento ── vai até as decisões práticas: em que ordem consertar o «nada mudou» e o que realmente acontece quando você limpa o cache.

PerguntaSeção
Afinal, o que é o cache?§1
Onde o cache mora?§2
Até quando a versão antiga vai continuar aparecendo?§3
Por que acontece o «atualizei mas nada mudou»?§4
Como conserto?§5
Limpar o cache me desloga?FAQ Q1
💡 Dica

No resumo da série, O que acontece entre digitar uma URL e a página aparecer?, dissemos que «o incidente causado por um armazém defasado rende um artigo inteiro». Este é esse artigo.

1. O que o cache realmente é ── reaproveitar materiais que você já buscou uma vez

1-1. Uma página é feita de dezenas de materiais buscados

Quando você abre uma página, o que chega não é um único arquivo. Primeiro vem a planta (HTML) e, enquanto a lê, o navegador vai buscar no servidor cada material que falta ── imagens, as instruções de estilo (CSS), as peças com movimento (JavaScript) ── um por um (o percurso completo está em O que acontece entre digitar uma URL e a página aparecer?). Dezenas de materiais para uma única página de notícias é totalmente normal.

Agora pense. Quando você visitar o mesmo site amanhã, o logotipo será o mesmo de hoje. As instruções de estilo, quase com certeza, também. Buscar arquivos idênticos do outro lado do mundo de novo, todos os dias, é um desperdício evidente, não é?

1-2. Por isso o navegador mantém um armazém local ── isso é o cache

Então o navegador guarda por um tempo os materiais já buscados em um armazém local (uma área de armazenamento dentro do seu PC). Na próxima vez que você abrir a mesma página, todo material que já estiver no armazém pula a busca por completo e sai direto da prateleira ── esse mecanismo, e o conteúdo do armazém, são o cache.

É exatamente por isso que «na segunda vez é mais rápido». Na primeira visita, cada um daquelas dezenas de materiais precisa ser buscado; na segunda, a maioria sai direto do armazém. Quanto mais buscas você pula, mais rápido a página abre.

Primeira visita vs. segunda visita

 Primeira visita (todo material é buscado)
  Planta HTML   : você <──────── servidor
  Logotipo      : você <──────── servidor
  Estilos CSS   : você <──────── servidor              △ uma busca por material
  Scripts JS    : você <──────── servidor

 Segunda visita (direto da prateleira)
  Planta HTML   : você <──────── servidor
  Logotipo      : você <── [armazém local]
  Estilos CSS   : você <── [armazém local]             △ a busca é dispensada por completo
  Scripts JS    : você <── [armazém local]

1-3. Cookies fazem um trabalho completamente diferente

Como sempre aparecem lado a lado no diálogo de exclusão, os cookies e o cache são confundidos o tempo todo ── mas seus trabalhos não têm nada a ver. O cookie é o cartão de sócio que diz ao site «quem você é»; o cache é o reaproveitamento de materiais que são «iguais para todo mundo». Um logotipo é o mesmo logotipo seja você ou qualquer outra pessoa, então pode ser reaproveitado do armazém; um cartão de sócio não é algo que se reaproveita. Apagar também difere na mesma medida: apague os cookies e você é deslogado; limpe o cache e as páginas só carregam mais devagar por um tempo (revisamos isso na FAQ Q1).

2. Há caches por toda parte ── o armazém do navegador é só um deles

2-1. «Cache» é o nome de uma ideia, não de uma função

Um ponto importante: «cache» não é o nome de uma função específica do navegador. É o nome genérico de uma ideia ── em vez de buscar algo de novo, reaproveite a cópia guardada à mão. E essa ideia é usada em todos os cantos da computação.

OndeCópia de quêArtigo relacionado neste site
O armazém do navegadorMateriais da página (imagens, CSS, JS) ── o protagonista deste artigoEste artigo
As anotações da lista telefônicaRespostas de consultas: «o endereço (IP) deste site é este»O que é DNS? §5
Armazéns compartilhados de escritórios e redesMateriais populares agrupados para todos da rede──
Os armazéns da rede de entrega (CDN)Cópias dos materiais de um site espalhadas pelo mundoPlanejado para um artigo futuro
Memória ultrarrápida dentro da CPUCópias de dados usados em cálculos (cache L1/L2/L3)O diagrama de hierarquia de memória em o artigo da reinicialização

Se você leu nosso artigo sobre DNS, vai lembrar disto: «uma vez consultado um número, guarde a anotação por um tempo e não pergunte de novo». É exatamente a mesma ideia. Seja a resposta de uma consulta (DNS) ou a mercadoria em si (materiais da página), o padrão é idêntico ── reaproveite uma cópia, dispense a busca.

2-2. Mais camadas, mais velocidade ── e mais lugares onde fica uma cópia velha

É porque todas essas camadas de cache estão empilhadas que a internet funciona na velocidade atual. Se cada acesso do mundo fizesse cada busca por inteiro, toda vez, nem as linhas nem os servidores aguentariam.

Mas isso cria a propriedade que está no coração deste artigo. Mais lugares guardando cópias significa mais lugares onde uma cópia desatualizada pode ficar. Seu armazém está em dia, mas um armazém compartilhado no caminho ainda guarda a cópia velha ── isso pode perfeitamente acontecer. Retomamos esse fio no §4.

💡 Dica

O «lado do site» daquela tabela ── o que exatamente é o servidor que guarda os materiais originais ── merece um artigo próprio. Planejamos cobrir isso em um post futuro.

3. Até quando uma cópia pode ser reaproveitada? ── etiquetas de validade e consultas de estoque

3-1. Cada pacote carrega uma etiqueta de validade

Se o armazém reaproveitasse sua mercadoria para sempre, nenhuma atualização de site chegaria jamais à sua tela. Mas se o navegador perguntasse ao servidor «isto ainda vale?» para cada item, dispensar a busca perderia metade do sentido.

O meio-termo é a etiqueta de validade. Quando o servidor entrega um material, ele cola um prazo no pacote: «reaproveite por até uma hora», «este aguenta um ano» (tecnicamente, uma instrução chamada Cache-Control ── não precisa decorar o nome). Para tudo que está dentro do prazo, o navegador tira direto da prateleira e nem pergunta ao servidor. Esse é o caminho mais rápido.

O prazo é definido pelo site, material por material. Um logotipo que quase nunca muda recebe um prazo longo; uma planta de página inicial (HTML) que muda com frequência, um curto ── essa é a divisão típica.

3-2. Vencido não significa jogado fora ── a consulta de estoque

Então, quando o prazo vence, o navegador joga a mercadoria fora e busca tudo de novo? Ainda não ── há mais um passo engenhoso: a consulta de estoque.

O navegador só pergunta ao servidor: «este item ── ainda serve?». Se nada mudou do lado do servidor, a resposta inteira é uma linha: «ainda serve, continue usando» ── a mercadoria em si não é enviada (tecnicamente, uma resposta curta chamada 304). Por maior que seja o arquivo, a consulta leva um instante, então esse caminho também é rápido. Só se o item realmente mudou é que chega um pacote novo, com etiqueta nova inclusa.

  1. 1Dentro do prazoDireto da prateleira. Nem se pergunta ao servidor (o mais rápido).
  2. 2Vencido → consulta → «ainda serve»Uma resposta de uma linha resolve; nenhuma mercadoria é enviada (rápido do mesmo jeito).
  3. 3Vencido → consulta → «mudou»Chega um pacote novo e substitui a cópia na prateleira (igual a uma primeira visita).

3-3. As anotações da lista telefônica carregam a mesma etiqueta

Essa regra ── reaproveitar até o prazo e depois buscar de novo ── soa familiar? É exatamente o TTL de nosso artigo sobre DNS (a instrução que diz por quantos segundos uma anotação da lista telefônica pode ser reaproveitada). E aquela história de que «esperar a propagação de uma mudança de site» é, na verdade, esperar as anotações do mundo inteiro vencerem ── dá para dizer que era a versão DNS do exato incidente que vamos resolver no §4.

4. A verdadeira causa do «atualizei mas nada mudou» ── os arquivos novos deveriam estar lá

4-1. Nada está quebrado, e mesmo assim a página continua velha

Agora temos todas as ferramentas para resolver o incidente da introdução.

No momento em que você atualiza o site, os materiais novos estão de fato no servidor. Mas no armazém local do visitante há materiais velhos cujas etiquetas de validade ainda não venceram. Como vimos no §3, sobre o que está dentro do prazo o navegador nem pergunta ao servidor ── ou seja, ele nunca tem a chance de perceber que os arquivos novos existem, e continua servindo os velhos.

O que acontece durante o «atualizei mas nada mudou»

  servidor            armazém local          tela
  [arquivos novos] ×── [arquivos velhos] ──>  a página continua velha
       △                 dentro do prazo
    já existem       «ainda pode reaproveitar»   nada está quebrado
                     então ninguém pergunta

Esse é todo o mistério. Sem bug e sem defeito ── a página velha persiste justamente porque todos seguiram as regras. É o verso inevitável da decisão que compra a velocidade: «dentro do prazo, não pergunte».

4-2. Por que ficou certo para você mas não para os outros

Esta é a parte que mais confunde quem administra um site. Na sua tela, limpar o cache resolveu. E mesmo assim os clientes continuam escrevendo: «para mim ainda aparece a versão antiga».

A explicação é simples: cada visitante tem um armazém próprio. O que você esvaziou foi o seu armazém, e só o seu; os armazéns dos seus clientes mantêm os materiais velhos até as etiquetas vencerem. Você pode limpar a sua prateleira ── não pode alcançar a de mais ninguém (o que o próprio site pode fazer está no fim do §5).

4-3. Não há um único armazém ── onde está a cópia velha?

Agora, retomando o fio deixado no §2: entre você e os materiais pode haver vários níveis de armazéns. O armazém do seu navegador, o compartilhado da rede da sua empresa, os da rede de entrega (CDN) e as anotações da lista telefônica (DNS) ── o nível em que a cópia velha está decide quem consegue de fato consertar. O único que você controla é o seu.

⚠️ Armadilha comum

Quando «limpei o cache mas continua velho», a cópia desatualizada geralmente não está no seu armazém ── está em um armazém intermediário (o compartilhado do escritório, ou o da rede de entrega) ou nas anotações da lista telefônica (DNS). Limpar a sua prateleira cem vezes não esvazia um armazém no caminho. Logo depois de uma migração de site, suspeite das anotações DNS esperando para vencer (→ a história da «propagação» em nosso artigo sobre DNS).

5. Como consertar e como conviver ── não apague tudo de primeira

5-1. Tente primeiro a medida mais leve

Quando uma página «não atualiza», pular direto para a limpeza total do cache é, na verdade, a jogada desperdiçadora. A regra de ouro são três passos, do menor impacto para o maior.

PassoMedidaO que fazImpacto
1Recarga forçada (Windows: Ctrl+F5 / Mac: Cmd+Shift+R)Manda buscar de novo, ignorando as etiquetas, só os materiais desta páginaSó esta página. Praticamente sem efeitos colaterais
2Abrir a página em janela anônima/privadaTesta com um armazém vazio ── se lá aparece certo, confirma que o culpado é o seu armazémSó diagnóstico. Não apaga nada
3Limpar o cacheEsvazia o armazém de todos os sitesÚltimo recurso. Tudo carrega mais devagar por um tempo

O passo 2 é discretamente o importante. Se a página continua velha mesmo em janela anônima, o problema não é o seu armazém (suspeite dos armazéns intermediários do §4-3 ── ou da possibilidade de a atualização nunca ter sido de fato publicada). Diagnostique primeiro e você nunca esvaziará todas as prateleiras à toa.

5-2. Limpar o cache não desloga você

O motivo mais comum de hesitação é «não vai me deslogar de tudo?» ── e aqui você pode relaxar. Como vimos no §1-3, o cache (cópias de mercadoria) e os cookies (seus cartões de sócio) moram em gavetas separadas. Limpar só o cache deixa seus logins intactos.

O detalhe: o diálogo de exclusão do navegador costuma mostrar ao lado uma caixinha de «cookies também», e marcá-la, claro, desloga você. As entradas do diálogo correspondem a três gavetas distintas ── cópias de mercadoria (cache), cartões de sócio (cookies) e anotações dos lugares visitados (histórico). Quando você percebe que está escolhendo qual gaveta esvaziar, não há mais nada de assustador (FAQ Q5).

Limpar o cache tem exatamente uma desvantagem: por um tempo, cada site volta a ser «primeira visita» e carrega mais devagar. Nada quebra.

5-3. Meio passo para quem constrói sites ── entregar atualizações sem espera

Para terminar, meio passo para o lado de quem constrói o site. Como não dá para sair esvaziando os armazéns dos visitantes, os sites que precisam entregar atualizações com garantia usam este truque: renomear o próprio material e enviá-lo como um item diferente. Transforme logo.png em logo-v2.png e nenhum armazém de visitante terá cópia com esse nome ── a busca está garantida. (Isso se chama cache busting.) Um site que nunca sofre com «minha atualização não aparece» é algo que se constrói por projeto.

Resumo ── a essência em 4 linhas

  • O cache é um armazém local: cópias de materiais buscados uma vez são reaproveitadas, dispensando a busca ── o próprio motivo do «na segunda vez é mais rápido»
  • Cada pacote tem etiqueta de validade: dentro do prazo, nem se pergunta ao servidor (o mais rápido). Depois, consulta de estoque ── um «ainda serve» resolve em uma linha
  • O incidente é uma cópia velha dentro do prazo: os materiais novos já estão no servidor, mas um armazém dentro do prazo nunca pergunta ── nada está quebrado, e mesmo assim a página continua velha
  • Conserte com a medida mais leve primeiro: recarga forçada → janela anônima para diagnosticar → limpar. Limpar não desloga (os cartões de sócio moram em outra gaveta)

E com isso o conjunto está completo: a caixa (HTTPS), o cartão de sócio (cookies) e o armazém (cache). Para reler a partir da imagem completa de uma requisição, vá para o resumo da série.

FAQ

Q1. Limpar o cache me desloga? Qual a diferença para os cookies?

A. Limpar somente o cache não desloga você. O cache são «cópias de materiais (imagens e afins) que você já recebeu»; o que mantém você logado é o cookie (seu cartão de sócio) ── uma gaveta à parte (→ nosso artigo sobre cookies). Você só é deslogado se também marcar os cookies no diálogo de exclusão. O custo total de limpar o cache é «as páginas carregam mais devagar por um tempo» ── nada quebra.

Q2. Limpei o cache e continua velho. E agora?

A. É o sinal de que a cópia velha mora em outro lugar que não o seu armazém. Três candidatos: ① um armazém compartilhado da rede do escritório ou similar (espere, ou fale com o administrador de rede), ② o armazém do próprio site ou da rede de entrega (CDN) (só o operador do site pode expurgá-lo), ③ as anotações da lista telefônica ── o cache DNS (típico logo após uma migração de site; → a Dica em nosso artigo sobre DNS). Se em janela anônima a página ainda aparece velha, é quase certamente um destes. Comparar a página em dados móveis e em Wi-Fi ajuda a separar ① de ②.

Q3. Devo limpar o cache regularmente?

A. Não ── é desnecessário. O armazém se administra sozinho pelas etiquetas de validade: mercadoria vencida é substituída por conta própria e, quando falta espaço, o mais antigo é descartado automaticamente. Limpar por rotina só devolve cada site a uma «primeira visita» e deixa tudo mais lento a cada vez. Reserve a limpeza para uma situação: diagnosticar um problema de exibição.

Q4. No celular acontece o mesmo?

A. Sim ── o mecanismo é idêntico, e o navegador do seu celular também tem um armazém. Um detalhe que vale saber: o navegador que abre dentro de um aplicativo (quando você toca um link em um app social, por exemplo) mantém um armazém separado do navegador comum. O «no Safari já está certo mas pelo app continua velho» acontece porque são dois armazéns diferentes.

Q5. No diálogo de exclusão, qual a diferença entre «cache», «cookies» e «histórico»?

A. São três gavetas separadas. O cache são cópias de materiais (apagar só deixa lento por um tempo); os cookies são cartões de sócio (apagá-los desloga você e reinicia as configurações dos sites); o histórico são as anotações dos lugares visitados (apagá-lo remove visitas passadas das sugestões da barra de endereço, por exemplo). Quando «um site aparece errado», a gaveta relevante é basicamente só o cache ── então o hábito seguro é esvaziar apenas a gaveta que corresponde ao seu objetivo.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *