SaytiHost

Artigo

Cache: um caso de uso

Por Planck / 2018-01-31

Se tratando de internet sempre são vistos artigos relacionados a cache e aos benefícios que sua implementação pode trazer a um website, todavia alguns websites nunca haviam necessitado realmente de utilizar esse recurso. Para alguns, o cache, faria o website ficar desatualizado. Pois bem, abaixo um caso de uso real sobre a utilização.


Cache o que é?


Por definição, cache seria uma maneira de acessar algo que já está processado, sem a necessidade de reprocessar novamente.


Imagine que você precisa de uma página qualquer, onde traz uma lista de informações da base de dados. Ora, se tiver que solicitar essa página, aguardar o processamento e então ter o resultado, um segundo usuário que precise dessa mesma informação não precisaria esperar um novo processamento, uma vez que o processamento já foi entregue uma vez. Portanto, armazena-se essa informação e quando alguém precisa entrega a partir do cache.


Nessa ótica,  o benefício seria a performance, porém a desvantagem (óbvio talvez) de se entregar uma informação desatualizada.


Afinal, quando realmente foi necessário?


Um site XPTO recebe cerca de 2000 visitas diárias, e é atualizado a cada hora com textos e imagens. Este site consome entre 60 e 80GB de tráfego  por mês.


Neste modelo, o site começou a apresentar algumas características: Quando as visitas começaram a aumentar, o servidor passou a ficar indisponível por alguns momentos, isso porque a quantidade de usuários simultâneos se tornou maior e os recursos do servidor passou a estar em máxima utilização, consequentemente o website também começou a ficar mais lento.


Em um primeiro momento, foi realizada algumas otimizações em querys e em índices da base de dados, mas nos dados já não havia muito o que se fazer, e não houve tanto resultado. Dessa maneira o website não teria mais espaço para crescer e caso quisesse crescer, precisaria investir mais em servidores, eis que surge a necessidade de utilizar o cache, e validar se realmente poderia fazer alguma diferença.


O que foi feito?


O site é atualizado a cada hora, então todos os visitantes de 0 a 59 minutos de cada hora consome a mesma informação. Portanto nesse período não seria preciso re-processar nada. Para tal, foi ativado o armazenamento de cache em uma pasta específica e uma vez por hora os arquivos de cache eram apagados, para que um novo processamento pudesse ocorrer.


O mais simples é que esse “cache” foi somente habilitado. Ou seja, o recurso já existia. Mas como assim? O website utiliza um componente de template chamado twig que nada mais é que um componente para template que o framework Symphony utiliza. Então a opção já existia e que, por teimosia, estava sempre desabilitado.


E os resultados?


As informações abaixo são as comparações de jul/2017 e set/2017. Agosto foi o período de transição e por isso não é válido para comparação.


Por fim, os resultados foram muito mais que satisfatórios. O site XPTO consumiu 63GB de tráfego em Julho e 12GB em Setembro. Redução de 51GB. Veja os gráficos de cada mês e seu consumo de tráfico médio por minuto:


Site XPTO - Julho 2017 - Tráfego médio dia-a-dia


Site XPTO - Setembro 2017 - Tráfego médio dia-a-dia


E como se não bastasse, os resultados foram positivos em diversos aspectos. Veja as informações a seguir do mesmo período, na qual a quantidade de sessões para cada dia, segundo informações do Google Analytics:




Ainda os percentuais relacionados aos meses em comparação. Note que houve significativos aumentos na quantidade de sessões, usuários e visualização de páginas:



Este último gráfico em “vermelho”, demonstra que mais usuários retornaram ao site.


E as tecnologias?


O site em ambos os períodos não mudou sua estrutura: Utiliza PHP 7.1 e MySQL. Não é utilizado um framework específico somente por opção, mas utiliza alguns componentes que atendem a necessidade.


No composer possuo os repositórios:

  • phroute/phroute

  • twig/twig

  • twig/extensions

  • phpmailer/phpmailer

  • illuminate/support

  • illuminate/database


Conclusões


De acordo com os gráficos apresentados é possível analisar uma considerável redução de consumo de tráfego, que foi o principal objetivo, e ainda houve um crescimento de visualizações e visitantes, esse aumento pode ter sido impulsionado pela maior disponibilidade do site em decorrência da utilização de cache.


Portanto, para o website em questão, a utilização de cache foi bem mais expressiva e positiva, e atendeu o objetivo de maneira assertiva. Todavia, a utilização ou não desse recurso deve ser analisada e utilizada de acordo com a necessidade de cada website.