Waarom toont de checkout in Magento een wit scherm bij grote winkelwagens (en hoe los je dat op)?

2 min leestijd 9 weergaven

Magento 2 – wit scherm in checkout (white screen of death) bij een grote winkelwagen

Stel je een klant voor die tientallen producten aan de winkelwagen toevoegt… doorgaat naar de checkout… en in plaats van de kassa een wit scherm ziet.
Klinkt bekend? In Magento 2.4.x is dit geen zeldzaam probleem – en we hebben het net meegemaakt in een live project.

Symptomen

  • De checkout werkte correct bij kleinere winkelwagens.

  • Bij tientallen producten – een witte pagina.

  • In de logs waren geen meldingen of fouten te vinden.

  • Soms werkte de checkout, en even later gaf dezelfde winkelwagen een lege pagina.

Spoor nummer 1 – Redis?

De eerste verdenking viel op Redis: sessielocks, concurrency, timeouts.

Na het uitschakelen van Redis werden de sessies inderdaad wat rustiger, maar het probleem verdween helemaal niet.

Spoor nummer 2 – shipping.phtml

ddd

Tijdens het stap voor stap debuggen kwamen we uit bij het bestand:

vendor/magento/module-checkout/view/frontend/templates/cart/shipping.phtml

dat een enorme JSON laadde:

window.checkoutConfig = {$serializedCheckoutConfig};

Bron van het probleem – quoteItemData

Het bleek dat de boosdoener een regel in DefaultConfigProvider was:

$output['quoteItemData'] = $quoteItemData;

oftewel alle gegevens over de producten in de winkelwagen. En op deze plek laadde Magento onder andere custom_attributes_serializable, dat soms… honderden MB groot kon zijn.

Oplossing

De eenvoudigste fix: onnodige gegevens verwijderen voordat ze in checkoutConfig terechtkomen.

Dat hebben we gedaan met een plugin op QuoteItem::setProduct():

public function afterSetProduct( MagentoQuoteModelQuoteItem $subject, $result, $product) { // główny winowajca $subject->setData('custom_attributes_serializable', null); return $result;}

Het effect?

  • De checkout begon stabiel te werken, zelfs bij grote winkelwagens.

  • De JSON-payload daalde van enkele/tientallen MB naar een paar honderd KB.

Conclusies

  • In Magento 2 kan de checkout erg gevoelig zijn voor wat er in quoteItemData terechtkomt.

  • Als jullie problemen hebben met witte schermen in de winkelwagen/checkout – controleer dan de grootte van custom_attributes_serializable.

  • Soms is één kleine plugin genoeg om de stabiliteit van de hele shop te redden.

Hebben jullie vergelijkbare avonturen met de checkout gehad? Welke andere vreemde gevallen hebben jullie winkelwagen in Magento stukgemaakt? Deel het in de reacties

Keep reading

Waarom de tweestaps-checkout in Magento 2 beter is dan One Step Checkout

Waarom de tweestaps-checkout in Magento 2 beter is dan One Step Checkout

4 min leestijd 5 weergaven
De keuze voor het juiste checkoutmodel in Magento 2 heeft veel invloed op zowel de gebruikerservaring als op je vermogen om te meten waar klanten afhaken. Met duidelijk gescheiden stappen maakt de tweestaps-checkout het eenvoudiger om afhaakmomenten te identificeren en daarop bij te sturen — bijvoorbeeld via verbeterde UX, een betere veldindeling of betaalintegratie. In tegenstelling tot oplossingen op één pagina, waarbij gedragspatronen vaak minder duidelijk zijn, zorgt het standaardproces van Magento voor stabiliteit, precisie en schaalbaarheid op lange termijn voor je winkel.
Lees meer
Cookievoorkeuren wijzigen