Minicart de Magento 2, mensaje de bienvenida, otros no funcionan con el caché de página deshabilitado después de iniciar sesión

16

Con el caché Magento 2.0.4 , más específicamente el caché de página habilitado , todo funciona.

Si lo desactivo, borro las cookies e inicio de sesión como cliente que los productos en minicart no están allí.

El mensaje de bienvenida no funciona bien. Tengo que agregar un producto al carrito desde una página de producto para ver el minicart. Entonces, si voy a pagar, el país no se muestra en el resumen de direcciones (la dirección de envío ya se agregó en mi cuenta).

He hecho la depuración y parece que el problema está apuntando a: module-customer/view/frontend/web/js/customer-data.js. La cookie private_content_versionse establece module-page-cache/view/frontend/web/js/page-cache.jsy se usa en customer-data.js. Ver customerData::reloadfunción.

Con la memoria caché de página deshabilitada, los datos no se cargan desde el servidor como lo hace la función dataProvider::getFromServer().

Cuando la caché de página está deshabilitada, la cookie private_content_versionno está allí (page-cache.js no se ejecuta fuera de curso). Pero la cookie section_data_idssolo tiene '*' y 'mensajes' => vacío (falso o nulo).

Cuando la caché de página está habilitada, hay private_content_versiony section_data_idstiene qué claves con valores:

*:      null
cart:       123
compare-products:       123
customer:       123
directory-data:     123
last-ordered-items:     123
multiplewishlist:       123
review:     123
wishlist:       123

Después de iniciar sesión con la memoria caché de página habilitada, en el panel del cliente hay 2 solicitudes ajax adicionales que cargan datos:

http://test.localhost/customer/section/load/?sections=&update_section_id=false&_=123 http://test.localhost/customer/section/load/?sections=directory-data&update_section_id=false&_=123

Estos contienen objetos json con datos específicos del cliente y datos de directorio como todos los países y regiones. Con estas llamadas, al finalizar la compra, el resumen de la dirección muestra el nombre del país. Ver: module-customer/view/frontend/web/js/sections-config.js y module-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js, función getCountryName.

¿Es esto un error de Magento 2 o es algo que he estropeado? Gracias

oscuro
fuente
¿Has podido arreglar esto o encontrar exactamente qué está causando esto? Tengo un problema muy similar, Magento ver. 2.0.1. Si elimino el caché (eliminando todas las carpetas de caché) me sale un mensaje de error similar en la consola del navegador:GET http://example.com/customer/section/load/?sections=&update_section_id=false&_=1462374643065 500 (Internal Server Error)
maginfortis
1
Aún no he encontrado una solución. En su caso, puede ser un caso más simple. Vea cuál es el error e intente solucionarlo. Habilite los errores en Magento 2 y evite ese error específico. No recibo errores, es solo que no carga los datos. No he visto errores en mi caso.
oscuro
Me he enfrentado al mismo error y diré que es un error de magento2, ya que con FPC habilitado funcionará, pero una vez que lo desactive, no lo hará. Para solucionarlo temporalmente, debe actualizar el minicart mediante programación en cada página.
Salma Saiyad

Respuestas:

0

Esto parece ser un problema pendiente, aunque tal vez se resuelva en versiones más recientes de M2. Vea los problemas de Magento GitHub:

En cuanto a lo que puedes probar ...

Si esto está relacionado con las cookies, puede descartar algunas posibilidades visitando su sitio en un navegador privado / navegador de incógnito. Revise su flujo de trabajo (sin iniciar sesión, agregue el producto al carrito, inicie sesión en el cliente, mire / checkout / carrito y menú desplegable de minicart).

Además, puede ser útil revisar los documentos de desarrollo de M2 para conocer las mejores prácticas con respecto a la configuración de los cachés en desarrollo frente a la configuración en producción . En mi experiencia, en desarrollo, está bien tener todas las memorias caché habilitadas en desarrollo, y simplemente vaciar cuando sea necesario (lea los documentos para obtener descripciones de cada memoria caché). Tenga en cuenta que, como un desarrollador principalmente front-end, personalmente prefiero desarrollar con FPC, salida de bloques y cachés de diseño deshabilitados: esto permite que los cambios frontend se vean más fácilmente.

nshiff
fuente