Marketing

Een Wordpress woonblog met 750.000 posts snel & online houden

Woonhome.nl is een online platform voor meubels & woonaccessoires. De site staat vol artikelen met woonideeën, unieke vintage meubels en... inmiddels meer dan 750.000 woonproducten voor de creatieve interieurfan. We helpen Woonhome.nl al jaren met oplossingen om door te kunnen groeien op deze - inmiddels uit zijn jasje gegroeide - Wordpress site. Een technische en leerzame uitdaging!

Whitney leaning against a railing on a downtown street
Posts
750.000
Uptime
99.99%
Afbeeldingen
2.000.000

Een leuk blog of mooie website bouwen op Wordpress kan tegenwoordig bijna iedereen: je installeert de laatste versie, kiest uit een van de talloze thema's en je klikt je website met plugins in elkaar. Toegankelijk en succesvol: inmiddels draait meer dan 30% van alle websites wereldwijd op dit CMS. Dit werkt perfect voor de meeste toepassingen, maar is minder vanzelfsprekend bij een database met meer dan een half miljoen producten.

Wordpress is ooit gebouwd als blog platform. In de loop der jaren heeft het pakket zich echter hard ontwikkeld waardoor het breed ingezet kan worden. De structuur en veel van de beschikbare plugins werken goed, maar zijn echter niet - of slechts beperkt - geschikt om met grote hoeveelheden data en drukte te werken.

Voor Woonhome combineren we de kennis van hosting, backend- en frontend ontwikkeling om oplossingen te leveren en advies te geven zodat ze door kunnen schalen. Dit is hoe we dat - enigszins in mensentaal - in de praktijk doen.

Beperken van Wordpress database belasting

Een groot deel van de Woonhome website wordt getoond vanuit een grote 'statische pagina cache'. Dit betekent dat we het resultaat van alle gegenereerde pagina's opslaan en dit resultaat aan de bezoeker tonen. Hierdoor hoeven we de grote database maar 1x per pagina te raadplegen, waarna dat voor alle volgende bezoekers niet meer nodig is. Zo houden we de server belasting laag en de website snel!

Wordpress gesplitst in lees- en schrijfdatabase

Op de Woonhome website worden volcontinu wijzigingen doorgevoerd op basis van product-feeds die worden ingeladen. Dit betekent dat de database server constant bezig is met het verwerken van wijzigingen. Om te voorkomen dat bezoekers van deze processen last hebben is de database van Woonhome gesplitst in een lees- en schrijfdatabase: in de schrijf database worden de complexe wijzigingen verwerkt die vervolgens in een stabiele 'stroom' in de lees database geschreven wordt. Zo is de schrijf database druk met wijzigingen en kan de lees database zich bijna volledig richten op het snel oplepelen van data voor de bezoekers.

We gaan creatief om met data die wijzigt

Statische pagina's zijn snel maar kun je niet zomaar aanpassen. Informatie die wijzigt, zoals de prijs van een product, heeft als gevolg dat een opgeslagen pagina verouderd is. We lossen dit op door ieder uur alle product eigenschappen die vaak wijzigen op te halen. Het resultaat daarvan slaan we op in een externe bron, buiten de grote database. Deze bron (voor de kenners: Redis) is geoptimaliseerd om kleine blokjes informatie snel te kunnen aanleveren. Als een bezoeker de website bekijkt krijgt hij de opgeslagen pagina te zien en direct daarna worden 'dynamische' onderdelen van de pagina uit de snelle bron opgehaald. Zo kunnen we toch alles up-to-date houden!

We optimaliseren het zoeken & filteren

Wijzigingen in het aanbod zijn voorspelbaar: bezoekers die in het aanbod zoeken zijn dat echter niet. Als veel bezoekers tegelijk de grote database doorzoeken wordt het langzaam. Om die reden slaan we alle 'doorzoekbare' eigenschappen van producten op in een tweede externe bron (voor de kenners: Elasticsearch), die specifiek voor zoeken geoptimaliseerd is. Dit doen we eenmalig: direct zodra er een product aan de site wordt toegevoegd. Zoekacties zijn daardoor snel en de grote database wordt zo min mogelijk geraadpleegd!