WordPress er i sin grundform rigtig godt, særligt hvis du bruger en kvalitets hostingudbyder. Det værende sagt, så har WordPress også en flaskehals. Det er databasen som indeholder alle indstillinger, indlæg, sider, osv.
Ofte er dette ikke noget du vil mærke noget til, men i takt med at databasen begynder at vokse i størrelse kan det tage længere og længere tid at spørge om data. Det gør sig særligt gældende ved store webshops med tusindvis af produkter, eller store magaziner med tusindvis af artikler.
Hvorfor det tager længere og længere tid
Når hentes data fra databasen, gøres det ved, at lave en query – på Dansk, en forespørgsel. Denne forespørgsel kan variere i kompleksitet. Du kan sammenligne det med en bibliotekar der skal finde en bog frem.
Kære bibliotekar, find mig bogen hvis titel er Hobbitten og fortæl mig hvad der står på side 23, linje 1
Det er en rimelig enkel forespørgsel som formentlig ikke vil tage særlig lang tid. Det kunne svare til at spørge WordPress om: Find produktet hvis titel er Hobbitten og fortæl mig hvad prisen er.
Det tager næsten ingen tid at udføre, da der formentlig kun er ét produkt som matcher denne forespørgsel. Selv med tusindvis af produkter, vil det være hurtigt at udføre.
Det bliver hurtigt mere komplekst
Webshops og hjemmesider er dog opbygget af en lang række queries (database forespørgsler) som spørger på meget forskellig data.
Kære bibliotekar, find mig de bøger hvis titel starter med Hob, der har ordene “rød eller grøn, men ikke blå, i sig” og hvis forfatters navn starter med “J”.
Det er en noget mere kompleks forespørgsel, da bibliotekaren potentielt skal igennem mange bøger. Det er ikke noget problem med f.eks. 5 bøger. Overvej dog hvordan tiden stiger med 10 bøger, 100 bøger, 10.000 bøger?
Det er lige præcis problemet med store databaser, det tager længere tid at udføre de komplekse forespørgsler.
Der er brug for komplekse forespørgsler
Det ville være nærliggende at tænke “Jamen, kan vi ikke bare droppe de komplekse forespørgsler?”. Desværre er det ikke så enkelt.
Forestil dig hvordan en webshop uden produktsøgning eller sortering af farver, priser, etc. ville være for dig at anvende?
Det er måske fint hvis vi taler om 10 eller 50 forskellige produkter, men knap så spændende hvis der er 10.000 forskellige produkter.
Gør WordPress hurtigere med Elastic Search
En af måderne du kan gøre forespørgsler til databasen hurtigere er ved at anvende Elastic Search.
Elastic Search er et service lag der lægges ovenpå WordPress, hvor din WordPress database synkroniseres med Elastic Search databasen.
Det betyder at WordPress’ data bliver markant hurtigere at lave forespørgsler i, fordi Elastic Search er optimeret til søgninger, særligt komplekse søgninger.
Sådan kommer du i gang
For at kunne anvende Elastic Search har du først og fremmest brug for et sted hvor du kan køre et Elastic Search cluster, det kan du f.eks. gøre via https://www.elastic.co/ eller hos Amazon.
Herefter har folkene bag 10up udviklet to plugins som slutter Elastic Search sammen med WordPress og WooCommerce.
ElasticPress: https://wordpress.org/plugins/elasticpress/
ElasticPress WooCommerce: https://da.wordpress.org/plugins/elasticpress-woocommerce/
Og er du til det lidt mere nørdet omkring Elastic Search, så kan jeg anbefale denne præsentation fra WordCamp Europe 2016 i Wien