zo. 15 jan. 2017

15.000 producten in WordPress/WooCommerce? Geen probleem!

Als je een webshop exploiteert met heel veel producten, wordt vaak gekozen voor Magento. Onterecht. Ook in WordPress kun je prima een webshop maken. Hier lees je hoe Webenable dat mogelijk maakt.

Speed
De keuze voor Magento ligt voor de hand als je een webshop hebt. Ten opzichte van WordPress met de plugin WooCommerce is Magento nu eenmaal meer geschikt als platform voor ‘grote webshops’. Dat komt natuurlijk omdat Magento bedacht is als webshop, en WordPress als blog, waar in de afgelopen jaren in toenemende mate uitbreidingen voor worden gemaakt. Magento wordt gezien als een ‘serieus e-commerce platform’, en WordPress/WooCommerce is leuk om mee te beginnen.

Goede ontwikkelaars
Maar Magento heeft één groot nadeel: het vereist goede ontwikkelaars, en het vinden van goede Magento-ontwikkelaars is lastig, want die hebben het allemaal druk. Dat drijft de prijs op, en daar komt nog bij dat het ontwikkelen van een werkende webshop in Magento (zeker in versie 2) substantieel meer tijd kost dan in WordPress/WooCommerce. Natuurlijk biedt Magento (veel) meer features, maar wat nu als je niet zoveel features nodig hebt? En kan dit allemaal echt niet in WordPress/WooCommerce? Voor deze frameworks zijn veel meer ontwikkelaars beschikbaar, en dat scheelt zoeken én geld.

WordPress-plugin
Om erachter te komen wat WordPress echt kan, ontwikkelde Webenable een proof of concept: een WordPress-plugin die ervoor zorgt dat zoeken in 15000 producten (mét zoekfilters en een auto-aanvullen zoekbox) geen probleem is. Op ons snelste platform (Ubuntu, Nginx, HHVM, MySQL) halen we met gebruik van 8 zoekfilters zoektijden van ongeveer 100ms. Een complete resultset inclusief PHP-uitvoertijd, http-overhead en client-render-tijd kan dus binnen 500ms op het scherm staan. Daarbij zien we voldoende mogelijkheden om dit nog sneller te maken. Door bijvoorbeeld gebruik te maken van een Redis-cache voor het ophalen van de producten gaat de zoektijd (die opgebouwd is uit zoektijd + product-ophaaltijd) waarschijnlijk met bijna de helft omlaag. Natuurlijk zouden we ook gebruik kunnen gaan maken van ElasticSearch, de verwachting is dat dit nog sneller zal zijn, maar het nadeel van deze extra oplossingen is dat het opzetten en onderhouden ervan weer meer werk is (dus duurder en alleen geoorloofd als het echt nodig is), vandaar dat we ons nu even bij dit ‘dunne’ concept houden.

De juiste hooks
De onderliggende technologie is verre van rocket science. Webenable heeft gekozen voor het maken van één tabel in de MySQL-database waar alle producten ingeladen worden. Ieder veld van deze tabel heeft een index, en voor MySQL is het zoeken in deze indexen met zulke aantallen natuurlijk geen enkele uitdaging. De plugin maakt gebruik van de juiste hooks die ervoor zorgen dat wanneer een product in WooCommerce toegevoegd of gewijzigd wordt, deze zoektabel ook een update krijgt. En voor de zekerheid vullen we de zoektabel iedere nacht (als het rustig is op de site) even opnieuw met een cronjob.

Prestaties
Natuurlijk klinkt het allemaal iets te eenvoudig zoals we het beschrijven, maar uiteindelijk toont dit aan dat 15.000 producten in een WordPress/WooCommerce webshop goed mogelijk is. Binnenkort implementeren we dit in een nieuw project, en kunnen we de prestaties in het echt meemaken.

Nieuwsgierig wat Webenable voor jouw e-commerce website of webshop kan betekenen? Neem contact op, we bespreken de mogelijkheden graag met je!