¿Por qué la caché de página completa deshabilita la caché de bloque?

13

Tengo una parte estática que se incluye en cada página (navegación), pero lleva mucho tiempo generarla. Es por eso que he establecido una vida útil de caché y una clave de caché estática.

Funciona bien, hasta que FPC esté habilitado. Luego, el bloque aún se genera nuevamente para una página recién llamada y no se sirve desde la caché del bloque.

Hay esta línea en Enterprise_PageCache_Model_Observer:

Mage::app()
    ->getCacheInstance()
    ->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); // disable blocks cache

¿Cuál es la razón para esto? Para mí tiene sentido seguir almacenando en caché ciertos bloques, incluso si FPC está activado, porque de lo contrario la generación de páginas que no se sirven completamente desde la caché se ralentiza.

  1. ¿Cuál es la decisión de diseño detrás de eso?
  2. ¿Cuál es una buena solución para eso?
  3. ¿Sería perjudicial si simplemente elimino esta prohibición de bloqueo de caché?
Alex
fuente
sabes que esta es una vieja pregunta, pero ¿encontraste algo al respecto?
xelber

Respuestas:

1

Este error se ha solucionado en Magento 1.14.2.0. (ref http://merch.docs.magento.com/ee/user_guide/magento/release-notes-ee-1.14.2.html en Problemas conocidos)

usuario487772
fuente
2
Me acabo de meter en esto en 1.14.2.4. Puedo ver que la lógica ha cambiado con el tiempo. El código está rodeado por el if: if ($this->_processor->canProcessRequest($request) && ($request->isStraight() || $this->_processor->getRequestProcessor($request)) ) { Mage::app()->getCacheInstance()->banUse(Mage_Core_Block_Abstract::CACHE_GROUP); } pero no puedo encontrar nada sobre el razonamiento detrás de por qué prohibirías el bloque de caché. ¿Puedes iluminar más?
PanPipes
2

Para poder desactivar FPC para bloques dinámicos, por ejemplo, en la página de pago o carrito. Sobre la tercera pregunta, en mi opinión, no debe hacer esto, ya que podría interrumpir el proceso de FPC (para ser sincero, para dar la respuesta correcta, también debemos verificar el código fuente).

Oğuz Çelikdemir
fuente
¿Es tu primera parte sobre mi primera pregunta? En caso afirmativo, ¿por qué es necesario deshabilitar el caché de bloque para deshabilitar FPC en la página de pago o carrito? De hecho, la memoria caché en bloque solo se deshabilita si se almacena en caché toda la página.
Alex
Acabo de comprobar el código fuente que controla las cookies del usuario. Si el usuario ha bloqueado la cookie, FPC bloquea las cachés. La función _getCookie devuelve la instancia Enterprise_PageCache_Model_Cookie que controla la cookie del usuario.
Oğuz Çelikdemir
¿Qué tiene eso que ver con la cookie? ¿Y de qué línea de código estás hablando? confundido
Alex
Alex, esta noche revisaré nuevamente y te enviaré los bloques de código necesarios.
Oğuz Çelikdemir