Skip to main content

Command Palette

Search for a command to run...

O que é CACHE ?

pra que serve?

Updated
•3 min read•View as Markdown
O que é CACHE ?
G

I am a developer from brazil

Cache de forma bem resumida, é uma tecnologia utilizada em vários contextos para que tenhamos o acesso rápido a informações de forma inteligente através do armazenamento de informações, e ele pode ser utilizado em diversos contextos.

  • Memória Cache
    No contexto de hardware a memória cache nos ajudou a fazer com que os processadores passassem a ser mais rápidos que a própria memória RAM, salvando os endereços mais utilizados pela memória do processador para que pudessem ser resgatados assim que requisitados.

  • Cache em Banco de Dados
    Podemos ter também um local de armazenamento onde armazenamos o resultado de uma consulta que é feita diversas vezes, como produtos em destaque de uma página inicial.

  • Web Cache
    Cache que pode ser feito pelo lado do cliente ( navegador ) e do lado do servidor ( aplicação ) , para que possa ser feito essa troca de informações utilizamos um HTTP Header que pode gerenciar e indicar como os caches devem ser guardados.

O Cache em Aplicativos Web

Através do Cache-Control podemos fazer o uso de várias diretivas que podem ser diretivas de requisição ( utilizadas pelo client ) ou resposta ( utilizadas pelo server ) para fazer o gerenciamento desses caches.

  • Cliente-side

    O lado do cliente ( feito pelo navegador ) no contexto web de cache, utiliza de arquivos e partes do site para que o mesmo conteúdo de uma página possa ser recarregado em memória assim tornando muito mais rápido o processo de montagem da página. ( normalmente pode ser controlado pelo usuário )

  • Server-side

    O lado do servidor pode armazenar em cache consultas de maior ocorrência ou até mesmo pedaços de uma página HTML que será passada para o cliente, fazendo assim com que não precise fazer a mesma consulta ou montagem de página sempre que um novo cliente solicitar a mesma página dentro do servidor, assim economizando recurso.

Cache Control

através dele podemos utilizar algumas diretivas que tornam possível comandar como o cache das informações deve se comportar.

Diretivas de Tipos de Cache

public (resposta) => significa que a informação pode ser guarda por qualquer tipo de cache.

private (resposta) => pode ser armazenada apenas por cache privado.

no-cache (resposta e requisição) => conteúdo armazenado em cache não pode ser liberado sem antes ser verificado no servidor. ( normalmente a verificação é feita através de um token )

only-if-cached (requisição) => uma vez que houver informação cacheada ela devera sempre ser servida do cache. ( só utilizar quando tiver certeza que a as informações não precisaram ser atualizadas )

no-store (resposta e requisição) => nada deve ser armazenado.

no-transform (resposta e requisição) => nenhuma transformação deve ser feita, evita por exemplo a troca de um content-type pelo lado de um cache proxy.

Diretivas relacionadas a Expiração.

max-age (resposta e requisição) => define o tempo em segundos para validade do cache.

s-maxage (resposta e requisição) => mesma função do max-age porém se aplica a caches compartilhados como proxy por exemplo.

max-stale (requisição) => cliente pode receber uma resposta com o tempo de expiração excedido.

min-fresh (requisição) => cliente requer uma resposta atualizada no tempo determinado.

Diretivas de Revalidação

must-revalidate (resposta) => cliente deve revalidar as informações antes expiradas antes de utiliza-las.

proxy-revalidate (resposta) => mesma coisa que o must-revalidate mas utilizado em proxys.

Abaixo vemos um exemplo de uma chamada utilizando o Cache-Control

image.png

Todos desenvolvedor deve se aprofundar um pouco mais no mundo dos caches, e descobrir as tecnologias e soluções que ele oferece, uma delas muito conhecida chamada Redis um banco de dados em memória utilizado no lado do servidor que pode ser utilizado tanto para cache quanto para outros fins como menssageria.

Redis merece um artigo especial só para ele, e enquanto isso eu quero estender muito mais este artigo, agradeço a leitura e bons estudos.