In de WordPress Cursus besteden we wat aandacht aan SEO, het beter gevonden worden in Google. In deze post wil ik wat dieper ingaan op een specifiek SEO onderdeel: de snelheid van je website. Als WordPress sneller werkt, wordt je website in theorie beter gevonden. Google rankt snelle websites hoger dan trage websites. Dat is één reden om een snelle site te willen. Het werkt natuurlijk ook gewoon fijn, zowel voor je gebruiker als voor jezelf. Maar waar begin je? En welke aanpassing levert het meeste op? In deze post beschrijf ik de tips voor WordPress optimalisatie die mij de meeste winst hebben opgeleverd.
PHP 7
Begin 2016 heeft PHP (de programmeertaal waarin WordPress is geschreven) een update gekregen naar versie 7. Jouw webserver draait weliswaar PHP, maar veel hosting providers bieden standaard PHP versie 5.6 aan. Meestal kunnen ze ook versie 7 aanbieden, maar dat moet je dan zelf activeren óf er even naar vragen. Ik raad je aan om over te schakelen naar versie 7 van PHP. WordPress is volledig compatibel met PHP 7 en deze update zorgt in bepaalde gevallen voor een snelheidswinst van meer dan 20%. Dit is één van de gemakkelijkste manieren om winst te behalen: gratis snellere laadtijden door het juiste vinkje aan te zetten.
Cache
Bij het ophalen van een webpagina moeten gegevens bij elkaar worden gezocht uit de database en diverse bestanden. Het resultaat van deze ‘rendering’ wordt naar de bezoeker van jouw website gestuurd. Eenmaal bij je gebruiker aangekomen maakt de browser er een nette webpagina van.
Het is voor de webserver relatief een tijdrovende klus om dit renderproces telkens opnieuw te doen. Daarom slaan professionele sites het resultaat van dit “werk” op, dat heet cache of caching. In plaats van alle details telkens opnieuw bij elkaar te zoeken voor elke gebruiker, stuurt de webserver een kant-en-klare pagina uit het cache naar je gebruiker. Daardoor werkt WordPress sneller.
Er bestaan veel caching plug-ins voor WordPress. Zelf heb ik een tijd gewerkt met WP SuperCache in combinatie met Autoptimize. Daarvan had ik direct het effect moeten meten. Dat deed ik overigens wel, maar ik keek (via sites als GTMetrix) vooral naar CSS, JavaScript en afbeeldingsoptimalisaties. Echter, als je server al traag reageert, heb je daar weinig aan. Ik had beter eerst kunnen kijken naar de server response tijden om te zien of WordPress sneller was geworden.
Meten
De snelheid van je server kun je meten met Chrome (developer tools), maar dat is niet erg betrouwbaar omdat de kwaliteit van onze (privé) netwerken afhankelijk is van allerlei factoren waar we geen invloed op hebben. De kwaliteit van je netwerk speelt een te grote rol in de meting. Het beste kun je de snelheid van je website meten via tools als Pingdom of GTMetrix. Let er bij Pingdom op dat je je locatie op Stockholm zet.
Het duurde bij mij tussen 1000 en 3500 milliseconden voordat mijn server de eerste byte terug stuurde na het opvragen van een pagina. Dat is een ééuwigheid: volgens Google is 200ms en hoger reden voor verbetering. Toch wist ik dat op mijn hosting provider WordPress sneller zou moeten zijn. Ik ben daarom plug-ins gaan uitschakelen. Toen bleek dat WP SuperCache helemaal niet voor een snellere website zorgde. Het deed precies datgene wat ik probeerde op te lossen: WP SuperCache vertraagde de website. Exit WP SuperCache.
De juiste cache plug-in
Een expert adviseerde me WP Fastest Cache te proberen. Met deze plug-in geïnstalleerd viel de TTFB (time to first byte) van de WordPress Cursus website terug naar 70 – 150ms. Gemiddeld meer dan 10x sneller dan voorheen en deze WordPress optimalisatie is moeiteloos te realiseren: installeer- en activeer de plug-in en zet ‘m op enable. Volgens SEO specialisten in mijn omgeving is WP Rocket een goed alternatief voor WP Fastest Cache, deze plug-in heb ik zelf echter nooit geprobeerd.
De eerste stap in het proces om een pagina bij mijn gebruiker te krijgen is nu snel geworden. Mijn voorpagina is echter best zwaar (zo’n 1,9MB). Ondanks de lage TTFB duurt het daardoor nog steeds best lang voordat de hele pagina is ingeladen. Met name de afbeeldingen zijn daarvoor verantwoordelijk.
Afbeeldingen optimaliseren
Grote afbeeldingen nemen niet alleen onnodig veel opslagruimte in, grote beelden maken je website ook traag. De afbeeldingen moeten namelijk gedownload moeten worden door je bezoekers, en grote bestanden duren nu eenmaal langer om te downloaden dan kleine bestanden. Via het optimaliseren van je afbeeldingen kun je de laadtijden van je pagina’s verkorten en jouw WordPress website sneller maken.
Afbeeldingen bevatten meestal overbodige informatie, wat ze onnodig groot maakt. Dat gaat niet alleen over metadata (zoals waar en wanneer een foto is gemaakt), maar ook over de pixel informatie die te gedetailleerd is. Er valt hier veel winst te halen. Soms meer dan 80% zónder dat je een afbeelding hoeft te herschalen. Probeer maar eens een afbeelding te uploaden naar Optimizilla. Je zult zien dat je per afbeelding gemakkelijk 60% winst behaalt.
Als vuistregel kun je hanteren dat een afbeelding over het algemeen kleiner kan zijn dan 150KB. Ik maak mezelf ook ‘schuldig’ aan het gebruik van grotere beelden, maar dan ga ik wel even kritisch na of er echt niet wat winst te halen valt. Nu is het wat omslachtig om al je afbeeldingen handmatig door een online image optimizer te halen. Bovendien loop je het risico dat WordPress bij het uploaden en herschalen van je afbeeldingen de optimalisatie weer gedeeltelijk teniet doet.
Het zou veel handiger zijn als een afbeelding wordt geoptimaliseerd zodra je ‘m upload. En daar is gewoon een plug-in voor: EWWW Image Optimizer bevalt me tot op heden prima. Je kunt de plug-in installeren en ‘m een batch optimalisatie op al je bestaande afbeeldingen laten doen. Dit duurt overigens even, dus de batch optimalisatie kun je beter niet uitvoeren als je site druk bezocht wordt. Zijn je afbeeldingen eenmaal geoptimaliseerd, dan doet de plug-in zijn werk bij iedere upload die je doet.
Hiermee is de grootte van je pagina’s als het goed is flink terug gebracht, waardoor er minder MB’s via het internet verplaatst hoeven te worden naar je gebruikers. Dat maakt je website sneller. WP Fastest Cache heeft een aantal opties om HTML en CSS te optimaliseren (minify), zodat je site nog wat kleiner wordt. Nogmaals: meet deze effecten, kijk waar de knelpunten zitten.
Cron
We kunnen de WordPress optimalisatie nog een stapje verder voeren door naar het onderhoudssysteem van WordPress te kijken. Cron is een systeem om taken – zoals het controleren op updates – volgens een bepaalde planning uit te voeren. WordPress heeft intern een soort cron systeem (WP Cron) dat wordt uitgevoerd als 1) een gebruiker je website bezoekt én 2) er taken zijn die uitgevoerd moeten worden. Dat betekent dat gebruikers van jouw website zo nu en dan onderhoudstaken activeren. Als dank daarvoor moeten deze gebruikers langer op je website wachten, want je server is even druk met..onderhoud. Dat is vervelend als je weinig bezoekers hebt, want een relatief groot deel van je bezoekers activeert je onderhoud. Maar het is ook vervelend als je veel gelijktijdige bezoekers hebt, want dan moeten ook andere gebruikers langer wachten op jouw website.
WP Cron uitschakelen
Beter is het om WP Cron uit te schakelen en het moment waarop de taken uitgevoerd worden op een rustig moment van de dag te plannen. Je kunt zelf de onderhoudstaken aanroepen door op je domein via wp-cron.php. Dus: https://jouwdomein.nl/wp-cron.php in je browser aanroepen. Deze aanroep kun je ook automatisch door een computer laten doen, maar laten we eerst eens kijken hoe we het standaard systeem van WordPress uitschakelen.
Via FileZilla kun je verbinding maken met je webserver, en daar het bestand wp-config.php opzoeken. Dit bestand staat in de rootmap van je WordPress website. Voeg aan dit bestand de volgende code toe op een nieuwe regel:
define( 'DISABLE_WP_CRON', true );
Sla het bestand op en upload het naar je server. Met bovenstaande regel schakel je WP Cron uit.
Cronjob configureren
Op dit moment worden er niet langer automatisch onderhoudstaken uitgevoerd. Dat wil je natuurlijk wel, anders moet je dat met de hand doen. Daarom moet er een cronjob geconfigureerd worden. Je kunt dat zelf doen als je toegang hebt tot een beheersgedeelte zoals CPanel of DirectAdmin. Bij cronjobs geef je dan het volgende op:
0 2 * * * wget https://jouwdomein.nl/wp-cron.php > /dev/null 2>&1
Bovenstaande zegt: elke nacht om 2:00 uur moet wget de pagina wp-cron.php op jouwdomein.nl aanroepen en het resultaat weggooien. Dat laatste is vooral omdat we niet geïnteresseerd zijn in wat de server terug stuurt bij het ophalen van deze pagina. Het is alleen belangrijk dat de cron taken worden uitgevoerd. Kun je niet bij een beheersomgeving, dan kun je natuurlijk altijd je host om hulp vragen.
Je gebruikers worden nu niet langer opgezadeld met jouw onderhoudswerkzaamheden, en kunnen direct door naar je website.
Conclusie
Met de juiste PHP versie, caching en het optimaliseren van afbeeldingen kun je ontzettend veel winst behalen. Zie de afbeelding, volgens Pingdom laadt de WordPress Cursus website sneller dan 94% van alle geteste websites. Voor een pagina van 1.9MB is dat niet slecht.
Het aanpassen van je Cronjobs is hierop een mooie aanvulling. Je kunt dit soort WordPress optimalisaties nog veel verder doorvoeren. Je zult echter merken dat je met steeds meer moeite, steeds minder winst behaalt. Verder is het belangrijk om je te realiseren dat je uitgangspunt een snelle hosting provider moet zijn. Is je host traag, dan is je website ook traag, hoeveel je ook optimaliseert. Dat heeft invloed op jouw vindbaarheid in zoekmachines, iets waar we in de WordPress Cursus ook herhaaldelijk op hameren.
Geef een reactie