php - las - htaccess cache
¿Por qué Magal Invalidation of Full Page Caching on Product save realmente hace que una página no se almacene en caché y qué hace la actualización ya que no está almacenada en la caché? (4)
Deberá crear un nuevo indexador personalizado Mage_Index_Model_Indexer_Abstract, y crear un nuevo modelo de recurso api métodos con trabajos cron
Por lo tanto, el caché es lo que más me confunde en Magento, como lo estoy para la mayoría, estoy seguro. Actualmente, uno de los sitios en los que trabajamos es en Enterprise y, por supuesto, utiliza FPC. El problema es que tenemos una actualización de inventario que se ejecuta cada 15 minutos. Muchos pedidos se envían a los CSR por teléfono ya través de un catálogo en un sistema externo fuera de Magento.
Cada 15 minutos se ejecuta un script para verificar cualquier inventario en ese sistema y para ver si difiere, entonces, qué hay en Magento. Si hay una diferencia, entonces el inventario se actualiza en Magento. Usando todos los métodos de Magento, sin SQL ni nada de eso.
Siempre hemos tenido problemas con el almacenamiento en caché y hemos probado todas las técnicas más recientes cuando se publican. El último que estamos intentando es Redis, y hemos tenido un gran éxito en otros sitios con él. Sin embargo, todavía estamos viendo una carga loca en el servidor y es evidente que las páginas no se almacenan en caché.
Después de profundizar en el código, parece que después de cada guardado de modelo o administrador de producto de administración, se busca para ver si se debe invalidar la memoria caché. Parece que al cambiar cualquier atributo, al menos el inventario marcará que FPC necesita ser invalidado.
Estoy confundido acerca de lo que significa la invalidación, porque hace un tiempo tuvimos una pregunta al servicio de atención al cliente sobre algo similar y esta fue la respuesta.
La memoria caché de página completa llegará a un estado invalidado ante cualquier cambio en los productos, categorías, CMS incluso cuando el stock se reduzca después de una venta.
Ahora, cuando la memoria caché de página completa llega al estado invalidado, esto no significa que se haya cambiado algo en su interfaz, sin embargo, cualquier cambio aplicado después de la última actualización no se mostrará en la interfaz.
Sin embargo, si tener el FPC validado en todo momento es una necesidad para su lógica de negocios, sin duda podría configurar su instalación de Magento para que se actualice automáticamente a través de la funcionalidad cron con la frecuencia que desee.
Sin embargo, en todas las pruebas que he realizado, tanto en la versión 1.9 como en la 1.11 Enterprise, aparece cuando se invalida el FPC, la respuesta no se extrae de la memoria caché. Lo que es contradictorio con lo que han dicho al respecto, simplemente no tener las actualizaciones más recientes.
¿Hay algo que este olvidando? ¿Alguien tiene una buena explicación de cómo funciona la invalidación en Magento específicamente para FPC o algún buen enlace para comprender completamente el proceso y el código?
Puede intentarlo usted mismo para cualquier página que esté en caché de página completa. Pero tengo entendido que el método /app/code/core/Mage/Core/Model/Cache.php
en /app/code/core/Mage/Core/Model/Cache.php
debería establecer el contenido del cuerpo con la respuesta en caché y devolver verdadero si la página está en caché.
Para realizar una prueba, vaya a cualquier página, asegúrese de que la guardó en caché y devuelva verdadero Entra y edita un producto, en nuestro caso cantidad. Esto invalidará el FPC. Sin embargo, ahora cuando carga la página que se almacenó en la memoria caché antes, devolverá falso en este método y no será una página almacenada en la memoria caché. No sé si esto es correcto para poder saber si una página está en caché o no, pero ahí es donde me lleva mi investigación. Por favor, corríjame si estoy equivocado.
ACTUALIZACIÓN: Tras una investigación adicional, descubrí que cuando guarda un producto en el administrador, la acción del controlador
Mage_Adminhtml_Catalog_ProductController::saveAction()
Llamaré al siguiente método
Mage::getModel(''catalogrule/rule'')->applyAllRulesToProduct($productId)
Luego, en la clase Mage_CatalogRule_Model_Resource_Rule
, se applyAllRulesForDateRange
método applyAllRulesForDateRange
y eso desencadena el evento
catalogrule_after_apply
Que el módulo de caché de página completa está observando y activando el método de caché limpio para la etiqueta FPC. Esencialmente eliminar todos los registros de caché FPC.
No veo por qué esto es necesario si antes de esto, la lógica está borrando los registros FPC que están vinculados a las etiquetas de productos y categorías. ¿Es esto un error?
El módulo de caché de página de Phoenix borra las páginas de productos y categorías, pero deja algunas áreas de invalidación de caché sin cubrir. Además, no trata bien el contenido dinámico.
tal vez debería revisar el módulo aoe_static que hace un gran trabajo al cargar contenido dinámico al cargar un diseño predeterminado y renderizar los bloques con una llamada ajax. esta llamada ajax también establece la cookie para permitir sesiones.
tienes que tener cuidado al utilizar 2 módulos en un área bastante difícil, tal vez deberías ver esta memoria caché de página completa de código abierto de magento
FPC está observando cambios en el inventario porque la intención es mostrar el agotamiento de existencias para cualquier producto que haya disminuido a cero. La solución sería crear un envío de eventos cuando un producto llega a cero en lugar de cada vez que un producto cambia el stock y reescribe el FPC para observar ese evento en lugar del original.
Otro método sería invalidar solo las porciones de caché correspondientes a los productos que se están actualizando, pero esto sería un cambio arquitectónico bastante significativo.
Lea el artículo que escribí en Full Page Caching in Magento. ¡Destaca una corrección de errores que repentinamente hace que todo el mecanismo de caché tenga sentido!
http://www.excitedcroc.com/article/why-the-magento-full-page-cache-doesnt-expire
Esencialmente hay un error en la forma en que Magento utiliza el mecanismo de almacenamiento en caché de Zend Framework.
El problema es que las clases de caché de la biblioteca Zend y las clases de caché de la empresa Magento utilizan una combinación de nulas y falsas en sus funciones que producen el valor de vida útil. Porque nulo! == falso siempre se usa una duración predeterminada de 10 días. El problema proviene de la función processRequestResponse en app / code / core / Enterprise / PageCache / Model / Processor.php. Debido a que no se pasa ningún valor de por vida a la instancia de caché al guardarlo, el valor predeterminado es nulo.
Cambiar el valor predeterminado para el parámetro de duración de la función de guardar de app / code / core / Mage / Core / Model / Cache.php solucionará este problema. Solo configúrelo en falso en lugar de nulo (el artículo vinculado anteriormente explica completamente por qué).
- guardar función pública ($ data, $ id, $ tags = array (), $ lifeTime = null)
+ guardar función pública ($ data, $ id, $ tags = array (), $ lifeTime = false)