Aguarde...

7 de janeiro de 2021

Estratégias de cache: tudo o que você precisa saber

Estratégias de cache: tudo o que você precisa saber

Com o passar dos anos, o tamanho dos aplicativos da web cresceu consideravelmente com a chegada da multimídia e de gráficos ricos. Isso foi possível com o uso de várias bibliotecas de suporte e folhas de estilo.

As interfaces de usuário modernas não apenas carregam grandes quantidades de recursos, mas também carregam grandes quantidades de dados, incluindo dados de sistemas CMS baseados em API . Baixar esses recursos e dados sempre é demorado e caro.

É precisamente aqui que as estratégias de cache da Web e de API vêm para o resgate. O cache ajuda a reduzir essas chamadas enquanto mantém a qualidade da saída. 

Caching 101: uma visão geral rápida

Cache significa armazenar recursos ou dados, uma vez recuperados como cache. Uma vez armazenado, o navegador / cliente API pode obter os dados do cache. Isso significa que o servidor não terá que processar ou recuperar os dados repetidamente. Consequentemente, isso resulta em uma carga reduzida no servidor. 

O cache parece um conceito simples – armazene os dados e recupere-os do cache quando necessário novamente. No entanto, pode se tornar complexo quando implementado. As estratégias de cache devem ser compreendidas e aplicadas com cuidado. Neste artigo, tentaremos capturar tudo o que você precisa saber sobre armazenamento em cache e várias estratégias de armazenamento em cache.

Diferentes estratégias de cache

Agora que entendemos o que é cache, vamos entender as várias estratégias de cache que existem. Cada recurso que está sendo armazenado em cache precisa ter as estratégias de cache corretas associadas a ele para garantir que não interrompa a funcionalidade do aplicativo. Mais adiante neste artigo, discutiremos as diferentes variações e nos aprofundaremos nelas para explicar como cada uma das estratégias de armazenamento em cache é única em sua própria maneira. 

Nível do navegador / cache local

Cache no nível do navegador significa armazenar os recursos e respostas da API no nível do usuário. Isso permite que o aplicativo da web carregue consideravelmente mais rápido em comparação com um novo carregamento. O armazenamento em cache no nível do navegador utiliza o armazenamento de dados local do navegador e o espaço em disco para economizar recursos. O navegador também mantém um índice desses recursos junto com seu tempo de expiração. O  tempo de expiração é a duração até que o cache seja considerado válido. Dependendo da frequência com que você altera seus recursos, esses tempos de expiração podem ser diferentes. 

O navegador é capaz de armazenar em cache não apenas arquivos JS ou CSS, mas também imagens, respostas de API e páginas da web completas, dependendo de como o site que você visita está configurado. 

Benefícios

  • O cache no nível do navegador consome espaço apenas no sistema do usuário
  • O cache no nível do navegador ajuda a evitar uma viagem completa de ida e volta ao servidor para obter recursos
  • Resulta no carregamento rápido da página da web
  • Chamadas de API reduzidas para o servidor, consequentemente, reduzem o tráfego do servidor

Inconvenientes

  • Se o tempo de expiração for configurado muito longo, ele pode carregar arquivos obsoletos e o aplicativo pode não funcionar corretamente
  • Se os recursos forem muito pesados, muito do espaço em disco do cliente pode ser consumido
  • Não temos controle sobre o cache

Cache em nível de objeto

A modelagem de páginas da web se tornou uma abordagem comum para o desenvolvimento da web hoje. A estratégia de armazenamento em cache no nível do objeto envolve o armazenamento em cache de páginas pré-processadas no nível do servidor junto com os dados. Isso ajuda a evitar chamadas de banco de dados frequentes, bem como chamadas de processamento de página. Um objeto basicamente pode ser qualquer recurso, dado ou página da web. O armazenamento em cache em nível de objeto é mais benéfico quando o aplicativo da web espera mais novos usuários regularmente. 

Benefícios

  • Cache comum para todos os usuários ajuda a garantir a entrega de conteúdo certa
  • A expiração do cache é controlada pelo servidor
  • Resulta na otimização de chamadas de banco de dados também 

Inconvenientes

  • Ocupa espaço em disco do servidor 
  • Requer um disco compartilhado ou duplicação de cache no caso de vários servidores com balanceamento de carga

Cache em nível de rede

O armazenamento em cache em nível de rede é uma metodologia de armazenamento em cache moderna em que o servidor da web HTTP intermediário e os roteadores são configurados para armazenar em cache as chamadas e recursos da API. Neste método de armazenamento em cache, configuramos a camada de rede para conter as respostas e recursos para URLs correspondentes. Este tipo de cache funciona estritamente com base em URL. A camada de rede pode ser configurada para usar ou ignorar parâmetros de consulta para os URLs conforme necessário para seu aplicativo. 

O armazenamento em cache da camada de rede melhora o desempenho geral, evitando completamente as chamadas de resposta. Portanto, resulta em melhor desempenho em comparação ao armazenamento em cache no nível do objeto. Em certas configurações, os usuários acessariam uma camada de rede regional mais próxima de sua localização. Isso pode melhorar o tempo de resposta consideravelmente, pois uma viagem de ida e volta aos servidores seria economizada. 

Benefícios

  • Cache comum independentemente dos servidores, resultando em uma renderização mais precisa 
  • Acessos reduzidos nos servidores de aplicativos devido ao cache da camada de rede 
  • Tempos de resposta mais rápidos em uma configuração de camada de rede regional 

Inconvenientes

  • Requer uma camada de rede durável com espaço em disco suficiente para armazenar o cache 
  • O tráfego e os requisitos de largura de banda nas camadas de rede aumentam

Cache de terceiros usando armazenamentos de cache

Este é o melhor método de cache em uso atualmente. O cache de terceiros envolve o roteamento de chamadas com uso intensivo de recursos por meio de provedores de cache de terceiros. Esses provedores de cache são responsáveis ​​por manter, gerenciar e limpar o cache conforme necessário. Além disso, os armazenamentos de cache também fornecem melhor transparência sobre o que o cache atual está mantendo e permitem que você limpe o cache quando desejado. 

Com o cache de terceiros, você também pode garantir que o mesmo cache seja servido em todo o mundo, independentemente do país ou região. Assim, eles também melhoram o desempenho do site, por sua vez, distribuindo dados em cascata para locais mais próximos do usuário. 

Benefícios

  • A responsabilidade total do cache é tratada por terceiros
  • Oferece controle total sobre o cache, garantindo que todas as alterações sejam replicadas em todo o mundo
  • Reduz ocorrências em servidores de aplicativos da web
  • Desempenho mais rápido do site devido aos servidores de cache de alta velocidade duráveis

Inconvenientes 

  • Mais caro em comparação com as estratégias de cache anteriores discutidas

Vantagens do cache

Do exposto, entendemos que o cache é certamente uma obrigação para a maioria dos aplicativos da web. Abaixo estão algumas vantagens de alto nível da implementação de cache:

  • Diminuir ocorrências ou carregar em servidores de aplicativos da web 
  • Melhor desempenho do site e tempos de carregamento 
  • Classificação de SEO mais alta devido ao desempenho otimizado
  • Troca de dados reduzida com cache baseado em navegador, resultando em consumo ideal de dados da Internet
  • Execução mais rápida de ações devido ao cache de API

Para obter os benefícios certos de cada mecanismo de cache, precisamos entender os conceitos associados a ele em profundidade. Esses conceitos são discutidos mais detalhadamente na próxima seção. 

Importância da expiração do cache

Um cache é um armazenamento de arquivos que foram processados ​​no passado e serão usados ​​no futuro. Esses arquivos podem não permanecer os mesmos durante sua vida útil. Pode haver cenários em que o arquivo pode ser alterado. Nesses casos, a expiração do cache torna-se importante. 

A expiração do cache é o tempo antes do qual o cache é considerado válido. Quando a solicitação de arquivos é enviada ao servidor, o servidor retorna os cabeçalhos relevantes para especificar o tempo de expiração do respectivo arquivo. O mecanismo de cache (navegador, terceiro ou camada de rede) mantém essa expiração para cada arquivo e se encarrega de atualizá-lo a tempo. Consequentemente, o problema de cache obsoleto deixará de existir. Ao analisar o impacto de diferentes estratégias de cache, é importante garantir que haja uma opção para configurar uma expiração de cache customizada.

Desvantagens do cache extremo

O cache, embora benéfico, ainda precisa ser feito com cuidado . Você precisa entender os arquivos que devem ser armazenados em cache. Ao mesmo tempo, você também precisa decidir cuidadosamente sobre o tempo de expiração do cache. Cache extremo é a situação em que os servidores de aplicativos da web armazenam em cache todos os arquivos possíveis com um alto tempo de expiração.

O cache extremo pode resultar em desempenho inadequado do aplicativo da web. Arquivos JS ou CSS desatualizados ou dados de chamadas de API também podem resultar em comportamento inesperado. Portanto, é importante armazenar cuidadosamente os recursos em cache e, ao mesmo tempo, atualizar o cache sempre que as atualizações estiverem sendo feitas. A próxima seção ajuda você a criar estratégias cuidadosamente para o cache de cada recurso.

Escolha da estratégia de cache certa para seu aplicativo

O armazenamento em cache de recursos estáticos em relação a chamadas de API de armazenamento em cache requer duas estratégias de armazenamento em cache diferentes. Cada estratégia se concentra em armazenar em cache diferentes tipos de dados. Antes de criar uma estratégia para o mesmo, você precisa separar os recursos e chamadas de API nas categorias abaixo:

  • Recursos estáticos: JS, CSS, arquivos de fonte e imagens que mudam muito raramente 
  • Chamadas de API de dados mestre: chamadas de API que fornecem dados que não mudam com frequência
  • Outros recursos e chamadas de API: são arquivos e APIs que contêm conteúdo dinâmico e precisam ser recuperados quase sempre

A segregação de recursos e chamadas de API ajudará na finalização da abordagem a ser seguida para cada um. Em seguida, tente organizar os recursos estáticos em uma pasta separada para tratá-los de maneira diferente. Agora, vamos tentar entender os métodos a serem seguidos para cada um. 

Recursos estáticos

O tempo de vida dos recursos estáticos normalmente é alto. Esses recursos geralmente incluem as bibliotecas e arquivos que são trazidos de terceiros. Por exemplo, isso inclui Bootstrap , JQuery , Google Fonts , Font Awesome e outros. Esses arquivos devem ser armazenados em cache por mais tempo, com tempos de expiração variando de 1 a 3 meses. A maioria das pessoas prefere usar um CDN de terceiros para hospedar essas bibliotecas. No entanto, não é aconselhável fazer isso. 

O armazenamento em cache de recursos estáticos reduzirá consideravelmente as chamadas de recursos para o servidor. Esses arquivos podem ser armazenados em cache usando o cache do navegador da web. O navegador pode manter e gerenciar a vida útil desses scripts. Assim, quando o URL do seu aplicativo da web é inserido, o navegador verifica todas as solicitações que a página da web faz. Com base no cache disponível, ele extrai os arquivos do cache de disco. 

O cache de recursos estáticos pode combinar o cache do navegador e o cache de terceiros para o melhor desempenho do aplicativo da web. Isso garante que, mesmo para o armazenamento em cache pela primeira vez para um novo usuário, o aplicativo da web raramente seja atingido. 

Chamadas de API de dados mestre com um CMS que prioriza a API

O cache de chamadas de API é um desenvolvimento interessante que foi feito nos últimos anos. No entanto, armazenar chamadas de API em cache ainda é uma coisa complicada de fazer. Usar uma plataforma madura para armazenar em cache essas chamadas de API é certamente melhor. 

Um CMS API primeiro como ButterCMS permite que você armazene em cache suas chamadas de API para várias entidades, como postagens, depoimentos, lista de serviços e outros. O cache de chamadas de API permite tempos de resposta mais rápidos para as APIs que, de outra forma, podem levar de 1 a 2 segundos se os dados forem muito grandes. 

Com o cache global, ButterCMS pode entregar dados para chamadas de API rapidamente com menos carga no servidor. Consequentemente, resulta em melhor desempenho e maior satisfação para você como cliente. Com as plataformas CMS, você pode deixar a responsabilidade total do armazenamento em cache para o provedor de API. Assim, não só reduz o tempo de desenvolvimento, mas também oferece uma saída de melhor qualidade. 

Outros recursos e chamadas de API 

Este é o conjunto final de recursos que são atualizados com mais frequência e podem precisar de limpeza frequente do cache para mostrar os dados corretos. Portanto, o conselho geral para esses recursos é garantir que eles não sejam armazenados em cache no nível do usuário ou do servidor. Qualquer armazenamento em cache de dados dinâmicos pode afetar a sanidade dos dados visualizados na tela ou consumidos por um serviço. 

Postado em Blog
Escreva um comentário