Guias

O que é cache? Um guia simples para criadores de apps

Cache significa manter uma cópia pronta de algo que era lento ou caro de obter, para que o pedido seguinte a isso possa ser respondido depressa a partir dessa cópia. A cópia guardada chama-se cache. O seu navegador faz cache de imagens para que um site carregue mais depressa na segunda visita; um servidor faz cache do resultado de uma consulta lenta à base de dados para não a executar para cada visitante.

A cache torna as apps mais rápidas e mais baratas de executar. O seu grande compromisso é que uma cópia pode ficar desatualizada.

Porque é que a cache importa quando cria com IA

Vai encontrar a cache em apps criadas com IA de três formas:

  • «Atualizei a app mas continuo a ver a versão antiga.» É o momento mais comum de cache, e normalmente é inofensivo — o navegador ou uma CDN está a mostrar uma cópia guardada.
  • Velocidade. Se uma página está lenta porque recalcula os mesmos números para cada visitante, guardar o resultado em cache pode fazê-la parecer instantânea.
  • Custo. Muitos criadores e alojamentos cobram por computação, tempo de base de dados e chamadas a APIs externas. Se mil visitantes desencadeiam o mesmo pedido caro, a cache permite pagar só uma vez.

Conhecer o básico permite pedir cache onde ajuda e reconhecê-la quando é a razão de algo parecer errado.

Uma analogia do dia a dia

Pense na cozinha de um café movimentado.

Todas as manhãs, o chef podia preparar cada café com grãos acabados de moer assim que é pedido. Isso é lento. Em vez disso, deixa um bule de café de filtro pronto na placa. A maioria dos clientes recebe uma chávena em segundos — isso é um acerto na cache. Quando o bule acaba, alguém prepara um novo — um erro na cache.

Mas o café que fica muito tempo perde qualidade, por isso o café tem uma regra: deitar fora qualquer bule com mais de 30 minutos. Essa regra é o tempo de validade da cache. Ninguém manteria o mesmo bule o dia todo, e ninguém pré-prepararia o pedido personalizado de alguém com leite de aveia e três açúcares — algumas coisas não devem ser guardadas de todo.

Onde vivem as caches

Um único carregamento de página pode passar por várias caches, desde a mais próxima do utilizador até à mais distante:

CacheOnde ficaO que normalmente guardaExemplo
Cache do navegadorNo dispositivo do visitanteImagens, folhas de estilo, scripts, tipos de letraO seu logótipo aparece instantaneamente na segunda página
Cache de CDNServidores espalhados pelo mundo, perto dos visitantesFicheiros estáticos e, por vezes, páginas inteirasUm visitante em Tóquio recebe os ficheiros de um servidor próximo, não da sua origem
Cache da aplicaçãoNo servidor ou junto a ele, muitas vezes em memória ou RedisResultados de consultas lentas ou de chamadas a APIs externasTaxas de câmbio do dia, obtidas uma vez por hora
Cache da base de dadosDentro da base de dadosDados usados recentemente e planos de consultaLinhas populares ficam na memória rápida

Uma CDN (rede de distribuição de conteúdos) é essencialmente uma rede mundial de caches para os ficheiros do seu site.

Como uma cache decide o que guardar

Cada cache tem de responder às mesmas perguntas:

  • O que pode ser guardado? Dados públicos e partilhados (a imagem de um produto, um artigo do blogue) — sim. Dados privados (a página de conta de um utilizador, as suas mensagens) — nunca numa cache partilhada.
  • Durante quanto tempo? Este é o TTL (time to live, tempo de vida). Um logótipo pode ficar em cache um ano; um nível de stock, 30 segundos.
  • Como é atualizada? Ou a cópia expira e é buscada de novo, ou a app remove-a de propósito quando os dados mudam — chamado invalidação.

Nos sites, o servidor indica aos navegadores e às CDN como guardar cada ficheiro, através do cabeçalho Cache-Control. Por exemplo, Cache-Control: max-age=3600 significa «pode reutilizar esta cópia durante uma hora».

As ferramentas de build modernas tratam da parte mais difícil nos ficheiros estáticos com cache busting: sempre que um ficheiro muda, recebe um novo nome com uma impressão digital, como app.3f9a2c.js. Os navegadores podem guardar o nome antigo durante muito tempo, porque a nova versão simplesmente tem outro nome.

Um exemplo prático: um catálogo de produtos

Tem uma pequena loja online. A página inicial mostra 50 produtos com preços e níveis de stock vindos da base de dados, mais uma lista de «em destaque» que exige um cálculo lento sobre todas as encomendas.

  1. Imagens e scripts são guardados em cache pelo navegador e pela CDN durante muito tempo. Cada nova build dá novos nomes aos ficheiros alterados, por isso as atualizações continuam a aparecer.
  2. A lista de destaques é calculada de 10 em 10 minutos e guardada numa cache da aplicação. Todos os visitantes desses 10 minutos recebem o resultado guardado instantaneamente.
  3. Os preços ficam em cache durante pouco tempo, e a cache é limpa sempre que edita um produto, para que os clientes nunca vejam um preço antigo durante muito tempo.
  4. O stock no checkout nunca é guardado em cache. Quando alguém clica em «Comprar», a app verifica a base de dados real, por isso não pode vender um artigo que acabou de se esgotar.
  5. As páginas do carrinho e da conta nunca são guardadas em caches partilhadas, porque são pessoais.

O resultado: a página inicial é rápida, a base de dados faz muito menos trabalho e nada que importe para dinheiro ou privacidade fica desatualizado.

Termos-chave

TermoSignificado
Acerto / erro na cacheOs dados foram encontrados na cache / tiveram de ser buscados à origem.
TTL (time to live)Durante quanto tempo uma cópia guardada é considerada atual.
Dados desatualizados (stale)Uma cópia guardada que já não está atual.
InvalidaçãoRemover deliberadamente uma cópia guardada porque o original mudou.
Cache bustingMudar o nome ou o URL de um ficheiro quando ele muda, para que as caches busquem a nova versão.
Cache-ControlO cabeçalho HTTP que indica aos navegadores e às CDN como guardar uma resposta.
Refresh forçadoRecarregar uma página pedindo ao navegador que ignore a cache.
RedisUma base de dados em memória muito usada, frequentemente como cache da aplicação.

Ideias erradas comuns

  • «A cache é sempre boa.» Guardar a coisa errada em cache causa erros reais: preços antigos, publicações novas em falta ou — o pior caso — a página privada de um utilizador mostrada a outro. Use a cache de forma deliberada.
  • «Se vejo a versão antiga, a minha atualização falhou.» Normalmente não falhou. Experimente um refresh forçado (Ctrl+Shift+R, ou Cmd+Shift+R num Mac) ou uma janela privada antes de assumir que algo está partido.
  • «A cache resolve uma app lenta.» Só esconde a lentidão em pedidos repetidos. O primeiro pedido continua lento, e se o problema de fundo for um índice em falta na base de dados, corrija também isso.
  • «Devo guardar tudo em cache o máximo de tempo possível.» Tempos longos servem para ficheiros que recebem novos nomes quando mudam. Para páginas HTML e dados, tempos mais curtos são mais seguros.
  • «Limpar a minha cache resolve para toda a gente.» Limpa apenas o seu navegador. Os visitantes e as caches das CDN continuam com as suas próprias cópias.

O que pedir ao seu criador com IA

  • «Quais as partes desta app que são lentas e quais podem ser guardadas em cache em segurança?»
  • «Guarda em cache a [lista de destaques / resposta da API] durante [N] minutos, e limpa-a quando os dados subjacentes mudarem.»
  • «Garante que nenhuma página com dados pessoais ou de conta pode ser guardada em cache por uma CDN ou por uma cache partilhada.»
  • «Define tempos de cache longos para ficheiros estáticos com impressão digital e curtos para HTML.»
  • «Guarda em cache as respostas de [API externa] para não a chamar em cada carregamento de página — e diz-me quão desatualizados podem ficar esses dados.»
  • «Vejo uma versão antiga depois de publicar. É a cache do meu navegador, ou alguma coisa não foi implementada?»

Cache no Mythex

Depois de publicar uma atualização numa app do Mythex, a documentação indica que as caches das CDN podem demorar um pouco a atualizar, e que um refresh forçado do URL público mostra a nova versão — veja Como publicar. A página de Limites de alojamento também recomenda a cache de recursos estáticos, já que o alojamento, o tempo de base de dados e a largura de banda são pagos com o seu saldo de créditos. Tudo o que vá além disso — guardar em cache resultados de consultas ou respostas de API — é algo que pede ao agente para construir na sua app.

Leituras relacionadas: o que é uma CDN, como tornar o seu site mais rápido e o que é limitação de pedidos (rate limiting).

Perguntas

O que é cache, em termos simples?

Cache significa guardar uma cópia de algo que era lento ou caro de obter, para que, na próxima vez que for necessário, possa ser servido rapidamente a partir da cópia guardada. Navegadores, CDN, servidores e bases de dados usam caches para tornar as apps mais rápidas e mais baratas de executar.

Porque é que continuo a ver a versão antiga do meu site depois de o atualizar?

É provável que o navegador ou uma CDN esteja a servir uma cópia guardada dos ficheiros antigos. Um refresh forçado (Ctrl+Shift+R no Windows, Cmd+Shift+R no Mac) costuma resolver. Para os visitantes, os sites bem construídos dão novos nomes aos ficheiros atualizados, para que as caches busquem a versão nova automaticamente.

O que faz limpar a cache?

Limpar a cache do navegador apaga as cópias guardadas de ficheiros e páginas, para que tudo seja descarregado de novo na próxima vez. Pode resolver páginas que parecem partidas ou desatualizadas, e as páginas demoram um pouco mais a carregar na primeira vez depois disso.

A cache pode causar problemas?

Sim. O principal risco é servir dados desatualizados — um preço antigo, um nível de stock desatualizado — ou, pior, guardar em cache a página privada de um utilizador e mostrá-la a outra pessoa. Boas regras de cache decidem o que pode ser guardado, durante quanto tempo, e nunca guardam dados pessoais em caches partilhadas.

Mythex · Pricing · Crie qualquer coisa com IA · Modelos de sites e apps · Mythex comparado · Glossário de criação de apps com IA · Ferramentas grátis para criar apps com IA · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)