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.
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.
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.