Web caching para uma Internet mais rápida
Autor: Hilton Garcia Fernandes | Publicado: 2010-06-14T11:57:00-07:00

Rodrigo Filipe Silva CarramateWeb caching nada mais é do que um processo pelo qual se armazena localmente conteúdo disponível na internet, a fim de minimizar o tráfego de rede e sua latência [1]. Apesar de parecer um conceito simples e de fácil compreensão, temos no web caching uma grande ajuda em dois fatores críticos nas redes atuais: a largura de banda [2] e a latência.Devido à queda no custo da Internet de banda larga para o usuário final doméstico e empresarial nos últimos anos, temos muitas vezes a falsa impressão de que largura de banda se tornou algo economicamente acessível. Na verdade isto é um equívoco, uma vez que esse tipo de usuário paga, na verdade, por uma concessão que, segundo o SLA [3] (em português "Acordo do nível de serviço"), lhe garante apenas 10% do que contrata nominalmente. Temos porém exemplos em que a situação é bastante diferente, como no caso de pequenos provedores, em que há necessidade de um SLA que garanta algo próximo dos 100% da banda; nestes casos temos preços bastante elevados para o total de banda contratado. Desta forma, quanto menor for a demanda de banda nessas redes, menor será o custo com contratação de banda.Outro grande problema que frequentemente encontramos é a baixa latência. Este costuma ser mais notado quando utilizamos algum serviço de streaming [4] diretamente da Internet, seja ao realizar uma video-conferência ou ao assistir a algum vídeo diretamente da Internet. Geralmente o sintoma mais comum em uma rede com baixa latência são travamentos frequentes durante a execução dessas tarefas.Infelizmente, o web caching é limitado apenas ao caso da execução de conteúdo arquivado, porém, nesse contexto o web caching se torna um excelente aliado: ao manter em servidores locais o conteúdo da Internet mais acessado, evitam-se acessos externos desnecessários, sendo o mesmo conteúdo repassado diretamente pelos servidores ao usuário. Assim, além de o usuário receber a informação muito mais rapidamente, permitindo uma navegação muito mais proveitosa, há uma economia considerável de recursos, já que a necessidade de banda diminui consideravelmente.Além de beneficiar a velocidade do acesso dos usuários da sua rede à Internet, o web caching ainda tem outro grande atrativo: o Squid [5], que é o software de web caching mais utilizado mundialmente tem seu código aberto, o que significa que todos podem estudá-lo e o melhorar. Além disso, felizmente alguns dos programadores do Squid têm permitido que seus usuários o possam usar gratuitamenteDevemos entender também que há vários tipos de caching, entre eles o caching feito na própria máquina e aquele feito na rede local. O primeiro é mais comumente feito pelo próprio navegador, possibilitando que se volte de maneira praticamente instantânea a páginas visitadas recentemente. O segundo, foco deste artigo, objetiva criar um cache compartilhado entre os usuários de uma mesma rede, de tal modo que se um usuário acessar uma determinada página, o servidor grava todo seu conteúdo automaticamente e distribui a cópia a cada uma das próximas tentativas de acesso.A aquisição de uma página por um navegador sem uso de web caching se dá pelo contato direto entre o cliente e o servidor que hospeda a página, havendo transferência direta dos dados. Quando se utiliza o web caching, o navegador faz a requisição da mesma forma, porém quem recebe e interpreta o pedido é o servidor de web cache. Este procura pela página em seu cache e, caso a possua, avalia sua idade e a compara com a sua data de validade estipulada pelo criador da página ou segundo um conjunto de regras estipuladas pelo próprio servidor de web cache. Caso a página ainda seja válida, a envia ao cliente; caso contrário, redireciona o cliente à página original e cria em seu cache uma cópia da mesma.Um problema que pode ocorrer é dado pelo chamado balanço de carga: para dividir o trabalho entre servidores distintos, um mesmo conteúdo é reescrito em URLs semelhantes, mas não iguais. Por exemplo, em [6] é dado o exemplo de uma mesma imagem armazenada em 3 diferentes servidores do Orkut:http://img1.orkut.com/imagem1.jpg (1)http://img2.orkut.com/imagem1.jpg (2)   http://img3.orkut.com/imagem1.jpg (3)Como o Squid trabalha através de URLs, ele entenderia que são 3 arquivos diferentes, o que causaria muito mais transferências do que necessário. Sendo assim, há softwares como o InComum [7], que podem ser programados para dar ao Squid a habilidade de reconhecer essa similaridade.O processamento da URL para detectar a uniformidade pode ser bastante complexo, uma vez que a URL pode conter muito mais informações do que aquela do nome do servidor e do arquivo. Podem haver, por exemplo, informações para controle da sessão.ConclusãoA arquitetura complexa e gigantesca de sistemas como o da Wikimedia[8], fundação que atende os projetos Wikipedia,  Wikidictionary, entre outros, só é realizável devido à existência de formas para minimizar o tráfego interno e externo, através do Squid.A imagem mostra um grupo muito grande de servidores formando um cluster, no qual há vários servidores Squid.[/caption]Referências[1] It's the Latency, Stupidhttp://www.stuartcheshire.org/rants/Latency.htmlVisitado em 31/05/2010[2] Largura de bandahttp://pt.wikipedia.org/wiki/Largura_de_banda_%28telecomunica%C3%A7%C3%B5es%29Visitado em 31/05/2010[3]  Acordo de nível de serviçohttp://pt.wikipedia.org/wiki/Acordo_de_N%C3%ADvel_de_Servi%C3%A7oVisitado em 31/05/2010[4]  Streaming Definitionhttp://www.techterms.com/definition/streamingVisitado em 31/05/2010[5] Squid: Optimising Web Deliveryhttp://www.squid-cache.org/Visitado em 31/05/2010[6] Cache efetivo de vídeos do Youtube com Squidhttp://www.lucianopinheiro.net/portal/?q=node/130Visitado em 31/05/2010[7] inComumhttp://sourceforge.net/projects/incomum/Visitado em 31/05/2010[8] Wikimedia servershttp://meta.wikimedia.org/wiki/Wikimedia_serversVisitado em 31/05/2010Saiba maisAbordagens mais aprofundadas sobre web caching[9] Web cachinghttp://www.ccda.biz/web/about/ac123/ac147/ac174/ac199/about_cisco_ipj_archive_article09186a00800c8903.htmlVisitado em 31/05/2010[10] Introdução ao Cache de Webhttp://www.rnp.br/newsgen/0003/cache.htmlVisitado em 31/05/2010[11] Making the Most of Your Internet Connectionhttp://www.web-cache.com/Visitado em 31/05/2010Relação entre web caching e QoS[12] ENHANCING QoS IN WEB CACHING USING DIFFERENTIATED SERVICEShttp://www.tmrfindia.org/ijcsa/V3I17.pdfVisitado em 31/05/2010