Qual cache (opcode) do PHP deve ser usado e por quê?

42

Eu continuo ouvindo sobre alguns caches PHP (opcode) como - APC, XCache, Memcache, eAccelerator, etc.

Mas eu não consegui descobrir como escolher uma. Além do benefício de desempenho, que um sistema de armazenamento em cache deve fornecer, que outros fatores devem ser um ponto de preocupação.

Por que você dirá que o sistema de cache X é melhor que Y? Estou menos preocupado com o ganho relativo de desempenho. Pequenas diferenças entre dois sistemas importam menos.

Se uma resposta genérica à minha pergunta não for possível, aqui estão alguns ponteiros. Eu uso dedicado VPS com Mediatemple (com acesso root). RAM é 512 MB (físico) + 400MB (troca) Estou preocupado com o WordPress e seus primos WordPress-MU e BuddyPress. 90% dos nossos códigos / sites se enquadram na família WordPress.

Agradecemos antecipadamente por alguma ajuda.

    
por rahul286 19.08.2009 / 17:24

6 respostas

32

Os produtos que você lista servem a diferentes finalidades.

caches OPCode

Existem muitos Aceleradores PHP (OPCaches), como visto nesta lista da Wikipedia . Como é comum com produtos de código aberto, eles são todos bastante semelhantes. O XCache é o acelerador PHP do lighttp e é a escolha padrão quando você está executando esse HTTPd. Ele funciona bem com o Apache também, mas o APC parece ser um pouco mais "joga bem com os outros" socialmente, sendo oficialmente suportado como parte do PHP, e é lançado em sintonia com a distribuição oficial do PHP.

Eu abandonei o eAccelerator usign devido ao seu desenvolvimento lento e atrasado em relação aos lançamentos do PHP, e o status abençoado oficial que a APC oferece com desempenho similar.

Geralmente, esses produtos são descartados; nenhum código altera o aumento de desempenho instantâneo. Com grandes bases de código (Drupal, Wordpress), o desempenho pode ser de até 3x melhor enquanto reduz o tempo de resposta e o uso da memória.

Armazenamento em cache de dados

O Memcache é um produto ligeiramente diferente - você pode considerá-lo como um sistema leve de valores-chave que pode ser dimensionado para vários servidores . O software precisa ser aprimorado para suportar o Memcache e resolve certos problemas melhor que outros. Se você tiver uma lista de valores de estoque em tempo real em seu site, poderá usar o Memcache para manter uma lista residente do valor atual exibido em seu site. Você pode usá-lo para armazenar dados da sessão para reutilização de curto prazo. Você não iria usá-lo para outras coisas, como caches de página inteira, ou como um substituto para o MySQL.

Existem também complementos do Wordpress, como WP-Super-Cache , que podem melhorar drasticamente o Wordpress ' desempenho (de fato, o WP-Super-Cache pode rivalizar com sites HTML estáticos em muitos casos)

Em resumo - eu recomendo a APC se você quiser um "configure e esqueça, produto bem suportado".

    
por 19.08.2009 / 17:36
7

Uma boa resposta foi postada em stackoverflow, que responde bem à sua pergunta.

link

    
por 19.08.2009 / 17:39
5

APC será construído no PHP6, então é uma escolha lógica. Eu uso, e o aumento de desempenho é incrível. Se você precisar armazenar em cache algo diferente de opcodes (ou seja, resultados de consultas do banco de dados), você também poderá usar o APC para isso, mas não é possível compartilhar caches APC entre vários servidores. Se você só precisa armazenar em cache em um único servidor, a APC é ótima. Se você precisar se expandir para vários servidores e quiser compartilhar um cache entre eles, memcached é o seu representante.

Uma coisa que eu faria, no entanto, é criar uma classe de wrapper para qualquer cache (não-opcode) que você fizer. Dessa forma, você pode trocar o mecanismo de cache sem alterar seu código.

    
por 19.08.2009 / 17:40
5

Apenas para notar que as coisas mudaram um pouco e parece que o APC não será incluído no núcleo do PHP 6.

A APC tem desenvolvimento lento e parece que nunca será compatível com o PHP 5.5. Por causa disso, parece que os caras do PHP irão configurar a extensão do cache opcode do Zend OPCache como a extensão PHP CORE. Você se importa leia mais aqui link .

Nota importante: O Zend OPCache não tem cache de dados do usuário como o APC, então se você precisar de cache de dados do usuário, você pode usá-lo junto com o Memcache.

    
por 25.08.2013 / 11:20
2

Se estiver executando a versão PHP pelo menos 5.50, o OpCache é sua melhor aposta (biblioteca nativa PHP / PECL). Ele deve vir pré-compilado se estiver instalando a partir do binário.

link

Se estiver executando a versão do PHP anterior à 5.5, o APC (cache OpCode nativo do PHP / PECL) seria a escolha mais simples, embora seja considerado não-mantido e morto:

link

Usar a funcionalidade nativa do OpCache do PHP deve poupar o trabalho de manter bibliotecas de terceiros.

    
por 16.01.2017 / 22:39
0

O Memcache armazena em cache pares de chave / valor, não opcodes. Você pode usá-lo em conjunto com um dos caches opcode.

    
por 19.08.2009 / 17:35