当前位置: 首页>>建站开发>>正文


Magento 2 minicart,欢迎消息,其他不能在客户登录后禁用页面缓存

webfans 建站开发 , , , , 去评论

问题描述

使用Magento 2.0.4缓存,更具体地说,启用了页面缓存,一切正常。

如果我禁用它,清除cookie,并作为客户登录,而不是minicart中的产品。

欢迎消息确实无法正常工作。我必须从产品页面添加产品到购物车才能看到minicart。如果我去结账,国家/地区不会显示在地址摘要中(我的帐户中已经添加了送货地址)。

我已经完成了调试,看起来问题是指向:module-customer/view/frontend/web/js/customer-data.js。 Crackers private_content_version设置在module-page-cache/view/frontend/web/js/page-cache.js中并用于customer-data.js。请参阅customerData::reload功能。

禁用页面缓存后,数据不会像dataProvider::getFromServer()功能那样从服务器加载。

禁用页面缓存时,cookie private_content_version不存在(page-cache.js不会被执行)。但是cookie section_data_ids只有’*’和’messages’ =>空(false或null)。

启用页面缓存时,private_content_versionsection_data_ids具有以下值的键:

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

在我启用页面缓存登录后,在客户仪表板上有另外两个加载数据的ajax请求:

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

它们包含具有客户特定数据的json对象和所有国家和地区的目录数据。通过这些呼叫,在结账时,地址摘要会显示国家/地区名称。参见:module-customer/view/frontend/web/js/sections-config.jsmodule-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js,功能getCountryName

这是一个Magento 2的bug还是我弄乱的东西?谢谢

最佳解决思路

这似乎是一个突出的问题,尽管它可能在较新版本的M2中得到解决。请参阅Magento GitHub问题:

至于你可以尝试…

如果这是cookie-related,您可以通过隐私浏览/隐身浏览器访问您的网站来排除某些可能性。完成您的工作流程(未登录,将产品添加到购物车,客户登录,查看/结帐/购物车和minicart下拉列表)。

此外,有关配置开发中缓存与configuration in production的最佳实践,请查看M2 dev docs可能会有所帮助。根据我的经验,在开发中,可以在开发中启用所有缓存,并在需要时简单刷新(阅读文档以了解每个缓存的描述)。请注意,作为一个主要是front-end开发人员,我个人更喜欢使用FPC,块输出和布局缓存禁用开发 – 这样可以更容易地看到前端更改。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/3021.html,转载请务必附带本地址声明。