Segredos do WindowsMantenha seus caches por perto

Raymond Chen

Os caches podem melhorar o desempenho, mas para isso você deve usá-los corretamente. No geral, há muitos parâmetros em que você pode mexer, mas mesmo que as diretivas de cache estejam devidamente ajustadas, ainda assim o cache deverá ser usado da maneira correta.

Eis um exemplo baseado em fatos reais. Eu mudei o cenário para algo que os leitores entenderão mais rapidamente, assim não preciso entrar nos detalhes de uma tecnologia que é irrelevante para o assunto em questão.

Vamos supor que uma empresa sediada em Nova York tenha um servidor Web central que funciona como arquivo de documentos. A empresa pode fazer solicitações do tipo "Providencie o Pedido de Exoneração do caso Johnson que arquivamos em 23 de junho de 2005". Na verdade, essa é uma página Web estática, uma vez que o documento nunca muda — se o pedido tiver de ser atualizado, uma correção será arquivada, enquanto o documento original permanecerá inalterado porque, bem, a empresa já o arquivou. Para alterar o pedido original, eles precisariam de uma máquina para voltar no tempo. (E, enquanto estivessem nela, acidentalmente mudariam o curso da história humana tomando alguma atitude aparentemente sem importância.)

Este padrão de uso é bem mapeado para um servidor proxy da Web de armazenamento em cache. Se alguém solicitar o Pedido de 23 de junho e, pouco tempo depois, outra pessoa pedir o mesmo documento, o servidor proxy poderá responder à segunda consulta e fornecer os mesmos resultados retornados para a primeira, economizando uma viagem de ida e volta ao servidor central.

Esta organização em particular já tinha um servidor proxy da Web de armazenamento em cache e configurou o escritório de Miami para utilizá-lo. Mas eles não perceberam nenhuma melhora no desempenho. Mesmo quando solicitavam o mesmo documento várias vezes em seguida no proxy, a resposta era tão lenta quanto pedir o documento diretamente no servidor central. O que saiu errado? O servidor proxy estava com defeito?

Na verdade, o servidor proxy estava funcionando perfeitamente bem. O problema era a localização dele: o escritório de Miami tinha uma conexão lenta com Nova York e estava usando o proxy da Web de cache instalado na filial de Nova York.

O diagrama da Figura 1 explica claramente por que o proxy não agilizou nada. Mesmo que ele tenha feito um trabalho perfeito e todas as solicitações puderam ser atendidas sem recorrer ao servidor central, ainda assim foi necessário transferir os documentos por uma conexão lenta entre Miami e Nova York.

fig01.gif

Figura 1 Servidor proxy no lado errado de uma conexão lenta (clique na imagem para ampliá-la)

Se você for usar um cache, ele terá de ser mais rápido do que o que está sendo armazenado. Neste exemplo, a conexão do escritório de Miami com o servidor proxy precisa ser mais rápida do que a conexão de Miami com o servidor central. O servidor proxy precisa ser instalado mais perto do escritório de Miami. Para obter os melhores resultados, o servidor proxy deveria estar instalado em Miami, conforme a Figura 2.

fig02.gif

Figura 2 Uma instalação de proxy bem mais útil para o escritório de Miami (clique na imagem para ampliá-la)

Com o servidor proxy localizado em Miami, quando um advogado de Miami solicitar o Pedido de 23 de junho, a solicitação irá para o proxy local, que rapidamente disponibilizará o documento de seu cache. Caso o documento ainda não esteja no cache, será recuperado do servidor e, depois, será colocado no cache para a próxima vez que alguém do escritório de Miami solicitá-lo.

Os caches têm a vantagem da localidade temporária, mas mudar o proxy para o escritório de Miami também explora a localidade geográfica: os advogados de Miami tendem a solicitar documentos diferentes daqueles pedidos pelos advogados de Nova York (desde que tratem de casos diferentes, claro), e manter um cache diferente para cada escritório remoto permite que cada um atenda melhor ao escritório que lhe foi designado.

A organização instalou um servidor proxy no escritório de Miami e configurou os computadores desse escritório para usar o proxy local. Agora eles estão satisfeitos com o desempenho.

Tanto o site de Raymond Chen, The Old New Thing, quanto o livro homônimo (Addison-Wesley, 2007) falam sobre a história do Windows e a programação em Win32. Um pouco de água com gás vai remover aquela mancha.