Minicart Magento 2, mensagem de boas-vindas, outros não funcionam com o cache da página desativado após o login do cliente

16

Com o cache do Magento 2.0.4 , mais especificamente o cache de páginas ativado , tudo funciona.

Se eu desativá-lo, limpe os cookies e efetue login como cliente, pois os produtos no minicart não estão lá.

A mensagem de boas-vindas realmente não funciona corretamente. Preciso adicionar um produto ao carrinho em uma página do produto para ver o minicart. Do que se eu for fazer o checkout, o país não será exibido no resumo do endereço (endereço de entrega já adicionado à minha conta).

Eu fiz depuração e parece que o problema está apontando para: module-customer/view/frontend/web/js/customer-data.js. O cookie private_content_versioné definido module-page-cache/view/frontend/web/js/page-cache.jse usado em customer-data.js. Veja a customerData::reloadfunção.

Com o cache da página desativado, os dados não são carregados do servidor como a função dataProvider::getFromServer().

Quando o cache da página está desativado, o cookie private_content_versionnão existe (o page-cache.js não é executado fora do curso). Mas o cookie section_data_idspossui apenas '*' e 'messages' => vazios (falso ou nulo).

Quando o cache da página está ativado, existe private_content_versione section_data_idstem quais chaves com valores:

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

Após o login com o cache da página ativado, no painel do cliente, há 2 solicitações adicionais de ajax que carregam dados:

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

Eles contêm objetos json com dados específicos do cliente e dados de diretório, como todos os países e regiões. Com essas chamadas, no checkout, o resumo do endereço exibe o nome do país. Veja: module-customer/view/frontend/web/js/sections-config.js e module-checkout/view/frontend/web/js/view/shipping-address/address-renderer/default.js, função getCountryName.

Isso é um bug do Magento 2 ou é algo que eu errei? obrigado

obscurecer
fonte
Você foi capaz de corrigir isso ou descobrir o que exatamente está causando isso? Eu tenho um problema muito semelhante, Magento ver. 2.0.1 Se eu liberar o cache (exclusão de todas as pastas de cache) recebo mensagem de erro semelhante no console do navegador:GET http://example.com/customer/section/load/?sections=&update_section_id=false&_=1462374643065 500 (Internal Server Error)
maginfortis
1
Ainda não encontrou uma solução. No seu caso, pode ser um caso mais simples. Veja qual é o erro e tente corrigi-lo. Habilite erros no Magento 2 e resolva esse erro específico. Não recebo erros, apenas não carrega os dados. Não vi erros no meu caso.
Obscuro
Eu enfrentei o mesmo erro e direi que é um bug do magento2, pois com o FPC ativado, ele funcionará, mas depois que você o desabilitar, não. Para corrigi-lo temporariamente, é necessário atualizar o minicart programaticamente em cada página.
Salma Saiyad

Respostas:

0

Este parece ser um problema pendente, embora talvez tenha sido resolvido nas versões mais recentes do M2. Veja os problemas do Magento GitHub:

Tanto quanto você pode tentar ...

Se isso estiver relacionado a cookies, você poderá descartar algumas possibilidades visitando seu site em um navegador de navegação privada / anônima. Passe pelo seu fluxo de trabalho (não está logado, adicione o produto ao carrinho, faça o login do cliente, veja / checkout / carrinho e menu suspenso de minicart).

Além disso, pode ser útil revisar os documentos de desenvolvimento M2 para obter práticas recomendadas em relação à configuração dos caches no desenvolvimento versus configuração na produção . Na minha experiência, no desenvolvimento, não há problema em ter todos os caches ativados no desenvolvimento e simplesmente liberar quando necessário (leia os documentos para obter descrições de cada cache). Observe que, como um desenvolvedor principalmente de front-end, eu pessoalmente prefiro desenvolver com FPC, saída de blocos e caches de layout desabilitados - isso permite que as alterações de front-end sejam vistas com mais facilidade.

nshiff
fonte