segunda-feira, 15 de outubro de 2012

A importância do udo de cache para os servidores web

O conceito de cache não é novo, mas ele normalmente é utilizado no lado do cliente. No entanto ele está cada vez mais sendo utilizado no lado do servidor, uma mudança de conceito importante, principalmente para que cuida dos serviços de rede, quer seja para funcionário dentro da intranet, quer seja para usuário na web.

Fazer cache significa manter uma cópia da informação, principalmente se for uma informação que seja constantemente acessada. Tipicamente o cache é utilizado no lado dos clientes, como por exemplo uma empresa que instala dentro da sua rede um cache web. Todo o acesso a qualquer página web passa antes por esse cache: se ninguém acessou esse site ainda, o cache foi buscar na Internet (e guarda uma cópia), no entanto se alguém acessou esse site recentemente o equipamento de cache entrega diretamente a cópia que ele tem armazenado - acelerando a performance a economizando banda da Internet.

Obviamente que existem questões que tornam esse processo um pouco mais complexo (por exemplo evitar que informações particulares de usuário sejam mostradas a outro), mas essas complexidades estão fora do escopo deste texto. No entanto existe uma questão importante: como o cache sabe se a página original  mudou? O ideal é que o servidor seja "amigo" do cache e, de alguma forma, indique ao equipamento de cache quando uma página mudou.

No entanto, independentemente de existir um equipamento de cache ou não na rede, os navegadores web (Internet Explorer, Firefox, Chrome, Opera, etc.) também fazem cache. Assim quando o usuário volta a um site visitado  recentemente, o navegador entrega uma cópia local, novamente economizando banda e acelerando a performance.

O interessante é notar que muitas vezes o site possui pedaços, que são comuns à várias páginas. Por exemplo, o documento que descreve o estilo do site (fonte usada, cores, fundo de tela, etc.) está em um arquivo CSS. Normalmente um site utiliza o mesmo CSS em todas suas páginas. Outro exemplo de "pedaços" comuns são os pequenos símbolos  logos, bordas e bullets que compõem a decoração das páginas, normalmente muito repetido.

Assim o navegador tem a oportunidade de aproveitar esses pedaços, mesmo quando o usuário visita uma página nova. Mas para isso o site web precisa ajudar - como eu já comentei, ser "amigo" do cache e na maioria dos casos isso não ocorre.

Vamos pegar um exemplo. O usuário acessa um site pela primeira vez, o navegador baixar o arquivo CSS de uma página. No dia seguinte o usuário acessa uma outra página do mesmo site que usa o mesmo arquivo CSS, será que esse arquivo CSS foi modificado durante a noite? Por precaução o navegador normalmente considera que o arquivo deve ter mudado, e baixa novamente a informação.

Assim um servidor web bem configurado é capaz de ajudar o navegador, informando a ele que o arquivo CSS não mudou desde o último acesso, acelerando assim o processo de navegação do usuário.

Repare que o servidor web configurado para acelerar o processo de cache nos navegadores traz benefícios tanto para o provedor do servidor como para os usuários. Para os usuários o benefício é um acesso mais rápido e um menor consumo de banda. Para o provedor o benefício também é um menor consumo de banda além de usuários mais satisfeitos.

Existe um artigo muito interessante, escrito por um dos principais funcionários do Google envolvidos em otimização de performance, sobre os benefícios de se usar mecanismos de otimização:
http://www.stevesouders.com/blog/2012/10/11/cache-is-king/

Neste artigo, entre todos os métodos para acelerar a performance do usuário, de longe o mais eficiente foi otimizar as informações de cacheamento para facilitar o uso dessa capacidade nos navegadores.


Se quiser saber dos meus próximos posts, você pode me seguir no Twitter http://twitter.com/mlrodrig

Postar um comentário