Even de strekking van een gesprek bij ons op kantoor.
“Hmm.. Die nieuwe sites die we gelanceerd hebben die doen wel wat traag aan!”
“Ja, hebt gelijk, de performance is niet helemaal wat het zou moeten zijn. Maar het zal die enorme flash header wel zijn die er van het reclamebureau bij moest.”
“Je hebt gelijk, die is ook veel te groot, maar ja, daar kunnen wij ook niks aan doen. Wat moet dat moet. De laadtijd kan nog net door de beugel.”
Maar op een gegeven moment gaat het je toch een beetje dwars zitten dat de site wel erg vaak tegen de irritatiegrens van 2 a 3 seconden aanhikt. Je gaat het onderzoeken door dingen uit te sluiten. Zonder de flash header blijkt de site niet veel sneller. De productcatalogus blijkt het ook niet te zijn, ondanks dat dat in verband met de multi-language functionaliteit een nogal heftige query is. Wat is het dan wel?
Na lang zoeken bleek het de functie te zijn voor het ophalen van het menu, waardoor er door een foutieve recursieve functie niet 1 of 2, maar 240 queries per pagina werden uitgevoerd, alleen al voor de weergave van het menu! Dat is nu het risico van teveel power. Onbegrijpelijk dat we die fout niet eerder hadden opgemerkt.
Wat hebben we vandaag geleerd: tel altijd het aantal uitgevoerde queries per pagina en accepteer NOOIT, maar dan ook NOOIT meer een acceptabele laadtijd.
(Het voordeel was trouwens wel dat alle overige code, voordat we de fout gevonden hadden, nu helemaal geoptimaliseerd is. Dat dan weer wel.)
Stem op dit artikel of voeg het toe aan:
Nog een voordeel: Je hoeft nu niet voor die zware sites een aparte MySQL server neer te zetten