Magento,Xcache and Two Cache Levels

Escenario: sistema lamp con opcode xcache instalado. Magento 1.7 producción. Configurando local.xml para tirar de caché backend Xcache vemos que Magento aloja igualmente la caché en /var/cache

El problema está más que descrito y hablado y recomentado aquí

http://www.byte.nl/blog/2011/06/16/speeding-up-magento-the-burden-of-two-level-cache/

Resumen: la razón por la cual vemos que, el directorio /var/cache continua con archivos físicos es que Magento activa automáticamente el mecanismo de cacheo de Dos Niveles. El cual escribe sólo partes de fragmentos de la cache en el backend rápido (memcached,apc o xcache) y escribe todo en la caché lenta (defecto: disco)

Utilizando el tag “slow_backend_store_data” podemos evitar esta situación, pero únicamente si utilizamos como slowbackend la base de datos.

Teniendo esto en cuenta, nuestra sección de local.xml debería quedar así:

<cache>
                <backend>xcache</backend>
                <slow_backend>database</slow_backend>
                <slow_backend_store_data>0</slow_backend_store_data>
                <auto_refresh_fast_cache>0</auto_refresh_fast_cache>
</cache>

Segundo problema, cuando hacemos esto y refrescamos, borrando si cabe la cache físicamente, nos topamos con el siguiente problema:

fast_backend must implement the Zend_Cache_Backend

No hace falta extenderse mucho, baste decir que Magento recomienda que utilices APC y te dejes de historias. Pero si nos obsesionamos con el Xcache, podemos hacer lo siguiente:

ruta Magento default = app/code/core/Mage/Core/Model/Cache.php
ruta Local = app/code/local/Mage/Core/Model/

creamos la ruta de carpetas en modo “local”, lo que hace que Magento primero mire ahí dentro y así no tengamos que modificar el core del mismo. Y editamos el archivo Cache.php, quedando el pedazco de Xcache (línea 181) como sigue:

case 'xcache':
                if (extension_loaded('xcache')) {
                   // $enable2levels = true;
                    $backendType = 'Xcache';
                }

A continuación podremos apreciar el incremento de velocidad de Magento y como ya no se guarda más caché en disco.

http://www.sonassi.com/knowledge-base/magento-kb/what-is-memcache-actually-caching-in-magento/

http://blog.nexcess.net/2012/02/24/magento-enterprise-and-memcached/
http://www.fabrizio-branca.de/magento-zend-frameworks-twolevels-cache-backend-mess.html
http://framework.zend.com/issues/browse/ZF-9150

Leave a Reply

Your email address will not be published. Required fields are marked *