O que é cache ?
Cache nada mais é do que um pedaço de informações que fica armazenado em algum local para que as informações sejam repassadas ou disponibilizadas mais rapidamente.
Quando falamos em aplicações web ou até mesmo mobile, na maioria das vezes o cache será salvo no navegador, como também terá cache salvo no servidor da aplicação e até mesmo em um serviço de CDN.
O objetivo principal é a entrega rápida daquela informação para quem irá consumi-la, no entanto, sempre é uma informação temporária, uma vez que sites e aplicações atualizam a todo instante.
Existem vários tipos de cache, e iremos explicar apenas aqueles que tem relação com aplicações e serviços web.
Principais serviços de cache web
O cache é crucial na velocidade, tempo de resposta e otimização dos nossos projetos. Atualmente o google leva a velocidade do nosso site muito em consideração quando tem que ranquear nas serps.
Se você fez uma pesquisa mínima no google, creio que ficou um pouco confuso aos tipos e modelos de cache que temos.
Então vamos explicar os principais..
Cache de Navegador (Browser Cache)
O cache no navegador (Broser Cache), é aquele cache onde informações a respeito de um site será armazenado no navegador do cliente.
Alguns exemplos de dados e informações são: imagens, logins, pedaços de código css e html também são salvos no navegador.
A vantagem disso é um carregamento muito mais rápido do site para aqueles que tem uma versão do cache salvo no navegador.
O usuário tem liberdade para remover o cache do navegador, mas sempre que acessar o site, ficará salvo conteúdo em cache.
Cache CDN (Rede de Distribuição de Conteúdo)
Uma Rede de Distribuição de Conteúdo, mais popularmente conhecida como CDN, nada mais é do que um serviço que tem como objetivo armazenar réplicas do conteúdo do seu site.
Ou seja, aquele conteúdo ficará em cache no CDN, e todo usuário que acessar seu site ou aplicação, o CDN irá fornecer aquele conteúdo.
Vale ressaltar que a maioria dos CDN possuem servidores em todo o mundo, e sempre que um visitante acessar seu site, o servidor mais próximo do visitante é quem vai responder.
Então o CDN também está relacionado com velocidade, pois todos os conteúdos estáticos serão entregues rapidamente, gerando uma melhora significativa no tempo de carregamento do seu site.
Existem várias empresas de CDN como:
- Google CDN
- CloudFront AWS
- DigitalOcean
- CloudFlare
- GoCache
- Akamai
- IBM CDN
- E outros…
Cada um possui suas particularidades na implementação, então é algo que você vai ter que testar e verificar se atende sua demanda.
Cache de Página ou Full Page Cache
O cache de página ou full page cache é aquele tipo de cache que é configurado a nível do servidor. O que isso quer dizer?
Isso significa que é necessário a implementação desse tipo de cache por um profissional na maioria das vezes. Conheça alguns cenários que é possível usar esse tipo de cache:
- Servidor Web Nginx + Cache Nginx
- Servidor Web Nginx + Cache Varnish
- Servidor Web Apache + Cache Nginx/Varnish
- Servidor Web LiteSpeed + Cache LSCache
Essas variações são as que conheço e que já trabalhei. Cada uma tem suas particularidades, vantagens e desvantagens umas das outras.
Mas a mais rápida na minha opinião é quando temos um Servidor Web Nginx + Cache Varnish ou Servidor Web LiteSpeed com LS Cache.
Dependendo das configurações realizadas, e tipo de servidor, os resultados em termos de desempenho e velocidade são aumentados em mais de 500x.
Observação: Aplicações como Magento, WordPress, Prestashop, Opencart e alguns outros, possuem módulos/extensões específicas para que a aplicação saiba enviar “sinais” para que o cache seja limpo quando você atualiza o site.
Se sua aplicação é de sua autoria, código privado, será necessário desenvolver uma rotina/módulo para que o cache seja atualizado quando você tiver atualizações. Caso contrário os usuários vão acessar páginas antigas a menos que você reinicie o servidor. (invalidação de cache).
Cache de Objetos
O cache de objetos é uma forma de armazenar resultados de consulta do banco de dados na memória RAM do servidor. Dessa forma, quando um usuário fizer uma solicitação ao banco, quem vai fornecer o resultado é o serviço do cache de objetos, em uma velocidade incrível.
A velocidade que os dados trafegam na memória RAM é muito rápido, então isso faz com que as respostas da nossa aplicação tendem a ser mais rápidas.
Em uma tacada só, você melhora o desempenho da sua aplicação e alivia a carga em cima do banco de dados. Apenas as informações que não estiverem em cache que o banco de dados terá que processar as solicitações.
Os dados em cache não são estáveis, uma vez que estão na memória ram, se você reiniciar o servidor os dados serão perdidos. O servidor também terá um aumento na memoria ram consumida, uma vez que ele está armazenando dados em cache.
Exemplos de alguns softwares para cache de objetos:
- Redis Cache
- Memcached
- Elasticsearch
Opcache ( Cache do PHP )
Uma extensão do PHP, OpCache é uma boa solução para os as lentidões e problemas de desempenho. Ele ajuda a melhorar o desempenho do PHP, armazenando o código de byte do script PHP pré-compilado na memória compartilhada. Desse modo, você não precisa carregar o PHP e analisar scripts em cada solicitação que um usuário fizer acessando sua aplicação.
Esse tipo de configuração é feita a nível de servidor diretamente no Servidor PHP, e para cada tipo de aplicação provavelmente teremos configurações específicas. No mais, sua aplicação terá uma melhora significativa no tempo de resposta, terá mais velocidade de carregamento e resposta!
Conclusão
Implementar uma solução de cache para seu site e/ou aplicação, vai ser muito bom, pois vai trazer muitas melhorias em performance e velocidade. O máximo de otimização que seu site puder ter, os usuários vão agradecer.
Sempre busque informações se é possível trabalhar com os tipos de cache citados aqui no seu projeto, pois nem todos são possíveis no primeiro momento.
Se seu site tem muito tráfego, ou terá, vamos cachear!