Debe comprender la clara distinción entre estos dos productos para comprender cómo usarlos.
- APC es tanto un caché de OPCode como un backend rápido
- Memcache es solo un backend rápido
Uso de APC como caché de OPCode
Simplemente instale el módulo en su servidor
pecl install apc
Y habilítalo en tu php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Luego habilita y ajusta la configuración de tiempo de ejecución para adaptarla, por ejemplo.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Luego reinicie PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Después de eso, no hay nada más que hacer. Confirme que APC está habilitado con un rápido phpinfo()
, pero de lo contrario, en este punto, la porción de caché OPCode de APC está activa.
No es necesario configurar nada del lado de Magento.
Usando APC como un backend rápido
Necesita agregar lo siguiente a su ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Luego, vacíe los cachés de su tienda existente. Para verificar que funciona, cargue una página en el front-end y el ./var/cache
directorio debe permanecer vacío.
Usando Memcache como un backend rápido
Deberá instalar Memcache como una extensión PHP e instalar el respectivo Memcache Daemon (Memcached) en su servidor.
pecl install memcache
Y habilítelo en su php.ini
echo "extension=memcache.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=memcache.so" >> /etc/php5/conf.d/20memcache.ini (Debian)
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Luego instale Memcached en el servidor. Para RH / Centos, ajuste la URL para adaptarla a su versión de lanzamiento y arquitectura de CPU.
rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
yum --enablerepo=rpmforge install memcached
apt-get install memcached (Debian)
Luego modifique Magento para usar Memcache como un backend rápido, cambie la ruta del socket a una conexión TCP / IP para adaptarla.
<cache>
<slow_backend>database</slow_backend>
<fast_backend>memcached</fast_backend>
<fast_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</fast_backend_options>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</cache>
Las advertencias de Memcache y el etiquetado: ¿qué está almacenando?
Memcache solo admite un solo nivel de relaciones clave-valor, por lo que no puede almacenar las etiquetas de caché de Magento (que se utilizan para vaciar los datos de caché de forma independiente). Como resultado, debe especificar a slow_backend
para mantener la relación de la etiqueta de contenido de la memoria caché o no definir ninguna.
Si define a slow_backend
, corre el riesgo de que las etiquetas de caché crezcan tanto que se niegue el rendimiento; También existe el problema inherente de que no puede escalar en varios servidores si cada servidor mantiene sus propias etiquetas de caché.
Por lo tanto, cuando se usa Memcache, el mejor enfoque (con la advertencia de que no puede vaciar las cachés de forma independiente), es no molestarse en usar el slow_backend
.
En cuyo caso, sugerimos eliminarlo <slow_backend>database</slow_backend>
y reemplazarlo con:
<slow_backend>Memcached</slow_backend>
<slow_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</slow_backend_options>
Esto interrumpirá / deshabilitará el segundo nivel de almacenamiento en caché (y evitará el almacenamiento de etiquetas), pero aún permitirá el rendimiento de Memcache.
Cual usar
Si se trata de una implementación de un solo servidor , no hay nada malo en usar APC para todo.
Si se trata de una configuración distribuida , deberá usar Memcache como el backend rápido (para que todas las máquinas puedan acceder a la tienda común).
Más preocupante es que si su proveedor de alojamiento no puede indicarle la configuración correcta para usar, ciertamente está con el host incorrecto.
Atribuciones: sonassi.com , php.net , repoforge.org