Waarom is mijn WordPress langzaam?
De eerste vraag is: Wat is er langzaam?
Is het alleen de voorkant of ook de achterkant? Is het de plug-ins pagina of ook er berichten pagina? Elk onderdeel heeft een eigen reden waarom het trager kan zijn dan normaal. Dit zal ik dan ook proberen uit te leggen in een reeks blogartikelen.
Om dieper in het probleem te duiken maak ik eerst een opsomming van de mogelijke locaties en kenmerken van een trage WordPress website:
- Voorkant WordPress
- Time to first byte
- Een zoekopdracht
- Ophalen van afbeeldingen en stylesheets
- Achterkant WordPress
- Dashboard
- Plug-in pagina
- Importeren van feeds
- Pagina’s en Berichten
Bovenstaande problemen kunnen allemaal te maken hebben met verschillende oorzaken:
- Overbelaste webserver
De meeste services van een server werken met het first come first serve principe. Een webserver krijgt een request en voert hem direct uit. Een request kan van alles zijn: het ophalen van een afbeelding (GET request), het verwerken van informatie (POST request). Stel je voor dat een webserver 10 requests per seconde kan uitvoeren, maar hij krijgt er 11 per seconde. Dan loopt hij elke seconde dus 1 request achter en loopt de wachtrij op.
- Overbelaste databaseserver
Het hierboven beschreven probleem kan ook voor databases gelden, maar hier spelen met meer aspecten een rol. De snelheid van een database server wordt in feite bepaald door de snelheid van een harde schijf in combinatie met de (beschikbare) processorkracht. Hoe sneller, hoe meer requests die per seconde aan kan. Dit heeft ook invloed op de tijd die net neemt dat de databaseserver (in dit geval MySQL) een table lock op een tabel zet. Tijdens deze lock staan alle andere verbindingen in de wachtrij, anders is er kans op conflicten.
- Langzame harde schijven in de server
Zoals hierboven beschreven hebben de lees- en schrijfsnelheden van harde schijven enorme invloed op de snelle werking van websites. De meeste providers gebruiken grotere SAN clusters waarmee snelheid gegarandeerd wordt. Zo zijn er meerdere schijven die tegelijk jouw data kunnen opzoeken of juist schrijven. Het verschil tussen SAS of SSD is ook heel groot, vooral als het om complexere database-bewerkingen gaat.
- Langzame verbinding van de server
Als de internetverbinding van de server traag is, dan betekent dit uiteraard dat alle bezoekers van die server langer moeten wachten op de data die ze opvragen. Je zou dit kunnen merken aan het feit dat de opbouw van een website heel snel begint, maar dat het opbouwen zelf heel lang duurt. De eerder vermelde time to first byte is dan in orde.
- Langzame verbinding van de bezoeker
Eigenlijk geldt hier hetzelfde als hierboven beschreven, maar dan ligt het aan de bezoeker. Het kan dus zijn dat bij de ene bezoeker alles traag is terwijl de rest van de bezoekers alles heel snel kan ophalen. Dit kan weer liggen aan de WiFi verbinding, of aan 3G/4G bereik, of aan een overbelaste computer.
- Te veel of te grote stylesheets/afbeeldingen om naar de bezoeker te sturen
Als de verbindingen goed zijn dan duurt het soms alsnog heel lang om alles op te halen, dit komt soms omdat de static assets van zo’n website enorm zijn. Soms worden er meerdere foto’s van 12 MB op een homepage gezet alsof het niets is. Iemand met een snelle 500Mbit verbinding zal nergens last van hebben, maar iemand op 3G kan zo 5 minuten wachten voordat alles geladen is. Dit zie je ook terug in de verschillende tools om op te meten hoe goed je website presteert.
- Slecht programmeerwerk van een thema of plug-in
De code die in thema’s en plug-ins zitten is vaak niet optimaal. Vaak kan je door plug-ins uit te zetten al een verschil in laadtijd zien op alleen al de homepage. Dit moet eigenlijk niet mogen, al zijn er ook grote plug-ins die gewoon laadtijd vragen in ruil voor een hele boel mooie functies. Probeer onderscheid te maken tussen langzame en snelle plug-ins. Kijk ook goed naar de recensies en beoordelingen van de plug-ins. Een slechte regel code of een typefout kan al onnodige wachttijden veroorzaken.