Мини-карта Magento 2, приветственное сообщение, другое не работает с отключенным кэшем страниц после входа клиента
С кэшем Magento 2.0.4, более конкретно, страница кэш включен, все работает.
Если я отключу его, удалю файлы cookie и войду в систему как клиент, чем товаров в миникарте не будет.
Приветственное сообщение на самом деле работает неправильно. Мне нужно добавить товар в корзину со страницы товара, чтобы увидеть мини-карту. Чем если я перейду к оформлению заказа, страна не отображается в сводке адресов (адрес доставки уже добавлено в мой аккаунт).
Я выполнил отладку, и похоже, что проблема указывает на:
module-customer/view/frontend/web/js/customer-data.js
.
Файл cookie 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
содержит только "*" и "сообщения" => пустые (ложные или нулевые).
Когда страница кэш включен есть private_content_version
и section_data_ids
имеет какие ключи со значениями:
*: null
cart: 123
compare-products: 123
customer: 123
directory-data: 123
last-ordered-items: 123
multiplewishlist: 123
review: 123
wishlist: 123
После того, как я войду в систему с включенным кэшем страниц, на панели управления клиентами появятся 2 дополнительных запроса 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.js
и module-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js
, функция getCountryName
.
Это Magento 2 ошибка или это что-то, что я напутал? Спасибо
1 answers
Похоже, что это нерешенная проблема, хотя, возможно, она решена в более новых версиях M2. См. Проблемы Magento на GitHub:
" Нет товаров" в миникарте в 2.1 (открыт на момент написания этой статьи)
Мини-карта пуста, если FPC отключен в Magento 2.1.1 (открыта на момент написания этой статьи)
Миникарта не показывает товар, даже если у меня есть товары в корзине (закрыто)
Насколько вы можете попробовать...
Если это связано с файлами cookie, вы можете исключить некоторые возможности, посетив свой сайт в личном браузере/браузере инкогнито. Пройдите через свой рабочий процесс (не войдя в систему, добавьте товар в корзину, войдите в систему клиента, просмотрите раскрывающийся список /оформление заказа/корзина и мини-карта).
Кроме того, может быть полезно просмотреть Документы M2 dev для получения рекомендаций по настройке кэшей в процессе разработки по сравнению с конфигурацией в производстве. По моему опыту, в процессе разработки это Хорошо, чтобы все кэши были включены в процессе разработки, и просто очищались при необходимости (прочитайте документы для описания каждого кэша). Обратите внимание, что, будучи в основном разработчиком интерфейсов, я лично предпочитаю разрабатывать с отключенными FPC, выводом блоков и кэшами компоновки - это позволяет легче видеть изменения интерфейса.