IntroducaoE muito comum (e util) aplicacoes complexas armazenarem algumas informacoes em cache para diversas finalidades. A mais importante e o rapido acesso a uma informacao que tem um custo relativamente alto para ser obtido, seja pelo tempo gasto, consumo de recursos computacionais para se realizar a consulta ou pela quantidade de vezes que se acessa a mesma informacao.Neste artigo, vou mostrar o conceito basico para se montar uma estrategia de cache e algumas exemplos de utilizacao.Como montar um cache para aplicacaoA coisa mais importante para se levar em conta ao adotar uma estrategia de cache sobre alguma informacao e que a informacao precisa estar sempre acessivel a partir de sua fonte original, ou seja, o cache deve ser descartavel a qualquer momento. Outra questao importante para se considerar e a confiabilidade da informacao vinda de um cache, afinal, e possivel adotar um tempo de vida do cache e assumir que o valor obtido dentro deste tempo e razoavelmente valido, ainda que a informacao real possa ter sofrido alguma alteracao.A logica basica para se montar qualquer cache e a seguinte:$informacao = obter_informacao_do_cache($id);if (!$informacao) { $informacao = obter_informacao_da_fonte_original(); salvar_informacao_em_cache($id, $informacao);}Ou seja, primeiro se tenta obter a informacao desejada do cache atraves de algum codigo de identificacao unica. Depois, caso nao tenha encontrado no cache ou a informacao nao e mais valida (por exemplo passou da validade), entao se obtem a informacao de sua fonte original e se guarda essa informacao no cache associada ao codigo de identificacao unica. Note que, mesmo que a informacao nao seja obtida do cache, ela ainda assim sera obtida por outra via confiavel.APCA extensao do PHP APC e capaz de cachear codigo intermediario do PHP (opcode), mas tambem oferece funcoes para se armazenar dados da aplicacao (variaveis) em cache de memoria.As vantagens dele sao a simplicidade de uso, possibilidade de especificacao de tempo de vida (validade), excelente desempenho, ja que utiliza a memoria RAM, e possibilidade de armazenar qualquer valor do PHP que nao seja do tipo resource.Por outro lado, e importante estar atento a quantidade de dados colocados em cache, afinal, a memoria RAM do servidor e limitada. Alem disso, quando a aplicacao e provida por um cluster de varios servidores, cada um mantera um controle proprio de seu proprio cache, portanto ha um desperdicio de recursos de certo modo. Embora isso possa ser implementado de forma peculiar onde apenas um servidor cuida do cache e prove um mecanismo para acesso pelos outros, adotar essa estrategia acaba prejudicando um pouco a performance (ja que havera troca de dados entre servidores).Para utilizar o APC como cache e muito simples:$informacao = apc_fetch($id);if (!$informacao) { $informacao = obter_informacao_da_fonte_original(); apc_store($id, $informacao, $tempo_de_vida);}Resumidamente: apc_fetch serve para obter uma informacao do cache (retornando false caso nao seja encontrada ou nao esteja mais disponivel/valida) e apc_store serve para guardar uma informacao no cache, com possibilidade de passar o tempo de vida (em segundos), que pode ser 0 (zero) para nao ter uma validade especifica.Algumas outras funcoes uteis sao: apc_exits: verifica se determinado cache existe no APC a partir de um codigo de identificacao. apc_delete: apaga