Category: cache

Magento: Sesiones cruzadas

Estos días tuvimos un problema con un módulo que desarrollamos, dicho módulo tenía que mostrar el nombre del usuario que inicio sesión con un simple saludo. “hola Roberto” por ejemplo.


Desafortunadamente, al momento de hacer las pruebas nos dimos cuenta que yo tenía el mensaje de bienvenida de otro usuario, y ese “error” se replicaba entre los demas usuarios, las sesiones activas en el servidor se estaban cruzando.


Después de mucho investigar nos dimos cuenta que el problema era la caché de Magento, el bloque del módulo no actualizaba la información que se generaba dinámicamente. Para solucionarlo tuvimos que sacrificar un poco el rendimiento de la página, desactivamos la Full Page Cache, y posteriormente procedimos a desactivar la caché a el bloque en especifico.


Esto lo logramos de la siguiente manera

public function _construct() {
    $this->addData(array(
         'cache_lifetime' => -1,
         'cache_tags'     => array(Mage_Catalog_Model_Product::CACHE_TAG),
    ));
} 



Este código lo ponemos en el constructor de nuestro bloque, con esto indicamos que nuestro bloque no sea almacenado en la caché de Magento, por tanto, cada petición que realicemos se generará  nuevamente sin consultar la caché.


Saludos.


Edición:


Siguiendo con la investigación, me doy cuenta que también se puede hacer mediante el .xml

<block type="modulo/bloque">
    <action method="setCacheLifeTime">
        <num>-1<num>
    </action>
</block>