Se você comprou leite na loja, pode entender como o cache funciona no lado do servidor e no navegador.Se você é um usuário ativo da Internet (e esse provavelmente é o caso), usa constantemente o cache, mas talvez não conheça os “bastidores”: quando e como ele funciona.
Do ponto de vista de um desenvolvedor, o armazenamento em cache facilita a criação de aplicativos e servidores Web de alto desempenho: você não precisa otimizar constantemente servidores sobrecarregados com milhares de solicitações - basta implementar protocolos de cache e a vida se torna muito mais fácil.
Ao armazenar em cache, o tempo de carregamento da página diminui de 2 segundos para 1 segundo ... o que não é muito impressionante, certo? Mas você não pode ficar sem isso quando precisa processar solicitações de um grande número de usuários.
Usando o cache em um dos meus aplicativos da web, percebi que apenas seguir os termos não é a melhor maneira de explicar essa abordagem. Ocorreu-me que uma boa analogia seria o caminho do leite da fazenda para a geladeira.
Para entender minha explicação, você precisa saber um pouco sobre o
básico de como os servidores web funcionam . Vamos começar!
Traduzido para AlconostComo seria a Internet sem armazenar em cache?
Antes de avançarmos para o cache, vamos pensar em como a Internet teria ficado sem ela. Imagine por um momento que você vive nos séculos 18 a 19. no campo. Você tem uma fazenda, mas não tem geladeira. Você mantém várias vacas, mas o leite delas estraga rapidamente e, portanto, é muito difícil obter os benefícios.
Aliás, em alguns lugares as pessoas ainda não têm geladeiras: elas bebem leite fresco imediatamente, ou
misturam-no com grãos e deixam fermentar - uma abordagem interessante, certo?
Em geral, você gostaria de vender leite para outros moradores. Mas eles terão que beber muito rapidamente. Suponha que uma vaca possa produzir dez litros de leite por dia. Isso significa que, se muitas pessoas de repente vierem à fazenda buscar leite, você precisará pedir que retornem no dia seguinte.

E esse não é o caso quando você pode obter mais algumas vacas e expandir, porque você tem uma base de clientes limitada: apenas os moradores de uma vila compram leite. Portanto, existem certos limites.

Sem armazenamento em cache, o poder de processamento dos servidores limita você. O armazenamento em cache é usado para carregar recursos estáticos, como:
- imagens
- CSS
- arquivos html estáticos
- Arquivos JavaScript.
Por padrão, para cada solicitação recebida, o servidor deve enviar uma nova resposta. Mas uma solicitação de carregamento de página pode realmente significar quatro solicitações separadas - uma para cada uma das categorias acima. Considerando que os arquivos de imagem geralmente são bastante volumosos, um grande número de usuários de todo o mundo sobrecarregará facilmente seus servidores e as páginas levarão mais tempo para carregar.

Idealmente, eu gostaria de reduzir a carga nos servidores, preservando de alguma forma as respostas a solicitações comuns. O servidor não precisa processar cada nova solicitação separada - a resposta será recebida do cache. Obviamente, você sempre pode instalar e adicionar mais servidores, mas isso pode levar a aumentos descontrolados de custos.
Cache do lado do servidor
De volta às nossas vacas. Você sabe o que facilitaria o trabalho da nossa fazenda de gado leiteiro?
Compre com uma geladeira!
Os moradores não precisam mais vir para a fazenda e beber imediatamente leite, porque ele pode ser armazenado com segurança por várias semanas.
A loja remove a carga da fazenda: agora as vacas não precisam ser perturbadas para cada comprador. A loja lida com a demanda e você só precisa ordenhar suas vacas diariamente. E mais uma vantagem: agora os moradores das aldeias vizinhas poderão comprar leite armazenado na geladeira.

O cache do servidor , como uma loja, manipula solicitações populares e entrega conteúdo muito mais rápido e confiável.
A figura acima mostra um
servidor proxy de armazenamento em cache : ele armazena arquivos estáticos que são usados para responder a solicitações comuns. Esse servidor intercepta essas solicitações e fornece uma resposta rapidamente, o que permite remover a carga correspondente dos principais servidores da web.
Neste ponto, você já pode ter perguntas:
- Como definir uma consulta "popular"?
- Por quanto tempo as respostas são armazenadas no cache do proxy?
Para explicar isso, você precisará de um guia mais detalhado para configurar o armazenamento em cache, mas agora é importante conhecermos um conceito importante:
atualização . Existem arquivos diferentes no proxy de armazenamento em cache, armazenados em cache em momentos diferentes, e ele precisa decidir se ainda deve emitir esses arquivos. Isso dependerá da
política de cache .
O que também se assemelha a armazenar leite em uma loja. O diretor da loja precisa decidir quanto tempo o leite ficará antes de ser descartado. Os proxies de armazenamento em cache medem seu desempenho pela
porcentagem de acertos do cache - a porcentagem de conteúdo que pode ser entregue através do servidor de armazenamento em cache.
Rede de entrega de conteúdo
Portanto, temos uma mercearia vendendo seu leite. Já não é ruim, mas os moradores podem comprar leite apenas em uma loja local, e é improvável que alguém venha de longe. Para expandir a produção, você precisa vender leite em mais lojas.
Então, você começa a entregar leite para outras lojas e, assim, satisfaz a demanda em uma região geográfica muito mais ampla. É semelhante a uma rede de entrega de conteúdo (CDN) - proxies localizados em todo o mundo (como os discutidos acima).
Como usuário final, você pode pensar que a Internet de alta velocidade permite carregar a maioria dos sites muito rapidamente. No entanto, isso é possível principalmente graças ao uso da CDN para a entrega rápida de arquivos estáticos.
Se você estiver na Inglaterra e estiver tentando baixar um arquivo armazenado em cache em um servidor em Khabarovsk, a resposta virá com um certo atraso: o sinal levará tempo para percorrer milhares de quilômetros de cabos. Portanto, um servidor proxy de cache local no Reino Unido permitirá que você carregue o site mais rapidamente.


Assim, seus servidores podem enviar uma cópia dos recursos estáticos para cada servidor proxy na CDN, para que processem solicitações locais até que os recursos não sejam mais "novos". Os provedores de serviços CDN populares são Rackspace, Akamai e Amazon Web Services.
Cache do lado do navegador
Portanto, agora pessoas de todo o país (e até do mundo) podem levar para casa o leite frio produzido em sua fazenda. Havia um problema: eles não podem armazenar leite em casa; portanto, depois de comprá-lo, você precisa beber rapidamente e voltar a comprar uma nova porção. Acontece que esse sistema ainda não é muito conveniente para os compradores.
A geladeira vai nos salvar!
Com uma geladeira, você pode armazenar leite em casa e não corre sempre para a loja. Em termos de armazenamento em cache, este é um local completamente diferente para armazenar recursos estáticos, pois está localizado no lado do cliente (em outras palavras, no computador em que o navegador está sendo executado) e nosso servidor proxy estava em um local remoto.
Essa abordagem não é apenas conveniente para o usuário no caso de sites visitados com frequência, como Facebook ou Amazon, mas também permite que esses sites economizem em custos de servidor devido a menos solicitações processadas.


E aqui é importante notar que o leite na geladeira NÃO APARECE! De qualquer forma, você precisa fazer a solicitação inicial, que chegará ao servidor ou servidor proxy, e somente depois disso poderá armazenar em cache alguns arquivos localmente.
Como o navegador sabe quando solicitar novos arquivos do servidor? Afinal, você precisa atualizar de alguma forma os arquivos locais.
Assim como os produtores de leite colocam datas de validade nas embalagens, os servidores adicionam um identificador específico ao cabeçalho de resposta HTTP. Na verdade, existem
quatro sistemas diferentes para cache HTTP. O cenário descrito acima é muito semelhante ao método de expiração. No entanto, no caso de alguns outros métodos, é necessário enviar uma solicitação ao servidor antes de emitir o arquivo em cache.

Quando começar a usar o cache
Suponha que você esteja criando seu primeiro aplicativo da web. Contanto que você não tenha milhares de usuários, provavelmente não precisará se preocupar com protocolos de cache: o custo de execução de um servidor será baixo o suficiente sem ele. No entanto, com o crescimento da base de usuários, o cache também precisará ser implementado - se você desejar que o aplicativo seja carregado rapidamente.
Tomemos o Heroku, por exemplo, uma ótima ferramenta para implantar seu primeiro aplicativo da web. No entanto,
para implementar o cache, você precisará usar um serviço separado - por exemplo, CloudFront da Amazon ou CloudFlare - e levará mais tempo para aprender isso.
Você pode observar o armazenamento em cache no lado do navegador ao tentar recarregar a página e obter novos recursos estáticos, mas a página não muda, não importa quantas vezes você a atualize.
Normalmente, o motivo disso é o protocolo de cache do lado do navegador. Para ignorar o cache do navegador e solicitar novos recursos do servidor, pressione
Cmd + Shift + R (se você tiver um Mac) ou
Ctrl + Shift + R (em um PC).
Sobre o tradutorO artigo foi traduzido por Alconost.
A Alconost
localiza jogos ,
aplicativos e sites em 68 idiomas. Tradutores em idioma nativo, teste linguístico, plataforma em nuvem com API, localização contínua, gerentes de projeto 24/7, qualquer formato de recursos de string.
Também criamos
vídeos de publicidade e treinamento - para sites que vendem, imagem, publicidade, treinamento, teasers, exploradores, trailers do Google Play e da App Store.
Mais detalhes