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_version
se establece module-page-cache/view/frontend/web/js/page-cache.js
y se usa en customer-data.js
. Ver customerData::reload
funció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_version
no está allí (page-cache.js no se ejecuta fuera de curso). Pero la cookie section_data_ids
solo tiene '*' y 'mensajes' => vacío (falso o nulo).
Cuando la caché de página está habilitada, hay private_content_version
y section_data_ids
tiene 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
fuente
GET http://example.com/customer/section/load/?sections=&update_section_id=false&_=1462374643065 500 (Internal Server Error)
Respuestas:
Esto parece ser un problema pendiente, aunque tal vez se resuelva en versiones más recientes de M2. Vea los problemas de Magento GitHub:
"Sin elementos" en minicart en 2.1 (abierto a partir de este escrito)
Minicart vacío si FPC está deshabilitado en Magento 2.1.1 (abierto a partir de este escrito)
Minicart no muestra ningún producto incluso cuando tengo productos en el carrito (cerrado)
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.
fuente