Blog Jvanderlinde.net
Insights & meer

Verbeter de performance van wordpress

Met regelmaat bouw ik wel eens een website voor een klant op basis van Wordpress. Wordpress is vrij eenvoudig in elkaar te zetten en bouw ik ook puur op basis van eigen thema's. Als je je wat meer verdiept in wordpress is het best te doen om hier een redelijke sitebuilder van te maken. De klant kan immers snel en gemakkelijk zelf zijn of haar eigen website op deze manier beheren en je hoeft geen duur CMS verder te ontwikkelen wat sluit op de wensen van de klant. Het probleem van wordpress is echter de resources die het vraagt om een enkele pagina te kunnen openen. Nu merk je daar weinig van als je gebruik maakt van shared webhosting, maar op eigen servers en ruim 300 websites per machinek wil je de load gewoon blijvend laag houden. Vaak zijn hoge load meldingen te wijten aan wordpress.

 

Een zoektocht op internet leert dat Wordpress gemiddeld 50MB PHP geheugen nodig heeft om alleen het "Hello World" artikel te spawnen. Dit is echt zonde van resources, het brengt gewoon een hele hoop overhead met zich mee dat een stuk minder kan. Natuurlijk zijn er zelf wat dingen die je kunt doen voor versnellen van wordpress:

  • - PHP 7.2 gebruiken
  • - Opcache
  • - Onnodig veel plugins vermijden
  • - Plugins die de database taxeren
  • - Verwijderen van thema's & plugins die je niet gebruikt

PHP 7.2 is de laatste en meest snelle versie van PHP ooit. PHP is de 'backend' tussen je website en webserver in. Deze verwerkt als het ware de code op waarop wordpress draait. De overhead is met komst van 7.2 enorm klein geworden ten opzichte van 5.6. Test maar eens een wordpress pagina op 5.3, 5.4, 5.6 & 7.2 en je zal het verschil in performance met eigen ogen beschouwen.

 

Opcache is een stukje caching wat veel voorkomende PHP queries als het ware eenmalig uitvoert en opslaat, zodat als het de volgende keer opgevraagd wordt, niet opnieuw 'berekend' hoeft te worden. Een bezoeker krijgt dezelfde output en dat merk je in prestaties. Immers iets dat direct vanuit het geheugen geserveerd kan worden is veel sneller dan wanneer het opnieuw uitgevoerd moet worden.

 

Bij het vermijden van onnodig veel plugins gaat het erom dat je het aantal plugins zo min mogelijk houdt. Iedere plugin maakt vaak een callback naar 'home' zoals dat heet om te controleren of er een update is, een RSS feed of iets in die trend 'includen' of een licentie controle. Harstikke leuk allemaal maar wel ten koste van resources op een server. De site snelheid kan verbeterd worden als je het aantal plugins minimaal houdt; of zelfs buiten wordpress om rechtstreeks in je thema kunt zetten.

 

Met plugins die de database taxeren, zoals bezoeker statistieken, webwinkels en dingen die met regelmaat de database gebruiken om gegevens te raadplegen en op te slaan, kan je ook hier het liefst buiten wordpress om proberen. Analytics heb je geen plugin voor nodig. Een hit-counter zal zoveel mogelijk in de database opslaan en iedere keer raadplegen wat ten koste gaat van de snelheid van de website. Ook dit kan je buiten wordpress om in je thema meeladen.

 

De meer je buiten wordpress om werkt, zoals bezoekers, hitstatstieken, woocommerce die per bezoeker een sessie opslaat enz, des te sneller je website zal functioneren. Maar er is natuurlijk meer dat je kunt doen om de snelheid ten goede te komen. Snelheid is een belangrijke factor binnen de zoekmachine. We gaan ook hier opnieuw in depth in op basis functies van wordpress die ten nadele van de snelheid van je website komen:

 

WP-CRON.php. Dit is een basis functie binnen wordpress die een cronjob als het ware aanroept. Als er iets moet gebeuren dan is deze functie verantwoordelijk voor de uitvoer hiervan. Denk bijv aan het registeren van een hit van een bezoeker. Voor een kleine website heeft deze functie weinig tot geen invloed op performance van wordpress. Heb je een flinke wordpress website dan kan dit al tientallen miliseconden gaan schelen op totale tijd om een pagina te openen. Er is een eenvoudige truuc voor om het aantal keer dat dit bestandje aangeroepen wordt drastisch te minderen. Als eerst open je wp-config.php en plaats je de volgende regel ertussen:

 

"define('DISABLE_WP_CRON', 'true');"

 

De volgende stap, is het handmatig aanmaken van een cronjob. Deze is noodzakelijk omdat je anders helemaal geen cron functies meer hebt binnen wordpress. Ga naar je cronjob tab in Cpanel, Directadmin of welke pakket dan ook en vul daarin:

 

"wget https://www.site.nl/wp-cron.php?doing_wp_cron=1 > /dev/null 2>&1"

 

De duratie kan je opschalen naar bijv iedere 10, 30 of 90 minuten, zelfs een 12 uur als je site nihil gebruik maakt van deze functionaliteit. Het volledig uitschakelen zorgt dat bepaalde (vitale) delen ook niet meer werken. Het uitschakelen van controleren op updates is een mogelijkheid, maar niet aan te raden, omdat wordpress vaak ook op de achtergrond kijkt naar security updates. Security updates blokkeren is echt niet aan te raden. Meer hardcore tweaks zijn natuurlijk ook mogelijk, die de on-site-speed van je website kunnen verbeteren. Denk aan de volgende dingen en aanpassingen:

  • - Minify van CSS en HTML
  • - Comprimeren van JS bestanden (experimenteel)
  • - Onnodige queries, bestanden en dergelijk meesturen
  • - Schone en nette code gebruiken
  • - Images lossless comprimeren
  • - GZIP gebruiken
  • - CDN gebruiken

De meer je kunt strippen in de werkelijke broncode dat je serveert aan je bezoekers, des te responsiever, sneller sites zullen zijn. Ik kan een paar (verschrikkelijke) voorbeelden gaan geven nu van hoe het niet moet, maar ik denk dat je middels deze pagina wel snapt waar het over gaat. Als aanvulling op het comprimeren van JS bestanden - het is mij opgevallen dat javascript vaak broken raakt (= kapot) zodra je ze comprimeert. Het is dus een experimenteel iets wat je kunt proberen maar niet te adviseren is voor een live site. Als je een snelle website wilt en niet zeker weet of wordpress het pakket is dat je nodig hebt, kan je altijd contact met mij opnemen voor advies.