Cees in Cyberspace

Tips & Scripts...

 

De Snelheid van je Website verbeteren

De Snelheid van je Website verbeteren

Uit diverse onderzoeken is gebleken dat een langzame website niet alleen irritant is voor de gebruiker, maar dat zo’n website ook nog eens lager scoort in Google en dat het je simpelweg geld kan kosten.

Wil je in detail weten welke nadelen er allemaal kleven aan een langzame website, dan raad ik de Beginners Guide to Pagespeed van Kinsta aan. Kort gezegd: hoe sneller de website, hoe hoger de conversie! Daarom is het zaak om qua prestaties het uiterste uit je website te halen. Eerder schreef ik al over het doormeten van je website, dus hieronder vind je tips over hoe je de resultaten van die metingen kunt verbeteren.

Kies de juiste hosting

Uiteraard moet je kiezen voor een betrouwbare, solide hoster. Helaas is in hostingland goedkoop vaak nog steeds duurkoop. Ik snap dat niet elk budget de duurste provider toelaat, maar hosting is wel de basis van alles. Dus zonder namen te noemen, waar moet de juiste hoster aan voldoen om de juiste prestaties te kunnen leveren?

  • een snelle aansluiting op het dichtstbijzijnde internetknooppunt
  • moderne hardware. Data opslag wordt steeds goedkoper en de meeste providers zijn daarom al over gegaan op oplossingen zoals SSD (of zouden dat snel moeten doen!)
  • snelle DNS servers. Een DNS server zorgt ervoor de de URL van jouw website vertaalt worden naar een IP adres en hoe sneller dat gaat, hoe sneller je website in beeld komt.
  • geen overvolle webservers. Zeker bij shared hosting deel je de webserver met andere websites en hoe meer dat er zijn, des te harder de server moet werken.
  • up-to-date software die ten volle wordt benut, zoals webservers die het HTTP/2 protocol en HTTP compressie gebruiken. De experts zullen ook zeggen dat je een hoster moet kiezen die Nginx als webserver gebruikt in plaats van Apache, maar daar weet ik dan weer niet genoeg van…

Schiet je provider op een van deze punten tekort, dan ondervind je meteen de gevolgen daarvan. Daarnaast is het zaak om zoveel mogelijk je website te hosten in het land waar je doelgroep zich bevindt; niet alleen ondervind je daar snelheidswinst van, zoekmachines kijken hier ook naar.

Cache je content

Caching is het bewaren van bezochte webpagina’s in het geheugen; je browser heeft cache, een webserver kent caching faciliteiten en CMS-en zoals WordPress kennen ook modules om te cachen.

De snelste cache is altijd die op de webserver, die (hopelijk) door je provider wordt geregeld. Soms heeft een provider meerdere manieren om te cachen, waardoor cachen in je CMS onnodig wordt. Hoe dan ook, caching levert altijd enorme snelheidswinst op.

Op het WordPress platform is W3 Total Cache mijn favoriete plugin met WP Fastest Cache op een mooie tweede plaats. W3 Total Cache kan zijn ook cache ook bewaren op externe servers zoals die van Amazon. Dan spreek je over offloading.

Iets soortgelijks is het inschakelen van een Content Delivery Network. Zo’n CDN maakt kopieen van je content en bewaart die op meerdere geografisch verspreide servers, zodat gebruikers altijd de kortste wachttijd hebben als ze jouw website benaderen.

Hou je pagina’s dun

En met dun bedoel ik niet dat ze zo weinig mogelijk tekst mogen bevatten. Ik bedoel dat je voorzichtig om moet springen met externe diensten zoals Instagram feeds en Google Ads. Ik begrijp het nut hiervan terdege, maar hoe meer van dit soort dingen geladen moeten worden op een webpagina, des te langzamer deze is.

En… optimaliseer de overige bestanden

Ook de bestanden die worden aangeroepen door je pagina’s, moeten zo klein mogelijk zijn qua kilobytes. Dat betekent dat:

  • je moet zorgen dat de (HTML) code achter je pagina’s netjes is. De code mag geen fouten bevatten (alle moderne browsers kennen een console om dit te controleren), er mogen geen overbodigheden in staan (heb je echt 19 scripts en 6 Google Webfonts nodig?) en inline CSS-code moet verplaatst worden naar een extern stylesheet, waar het hoort.

    De juiste webontwikkelaar heeft hier natuurlijk vantevoren al rekening mee gehouden.

  • je afbeeldingen moet optimaliseren voordat je ze uploadt. Gebruik hiervoor bijvoorbeeld een Photoshop action, maar vermijd tools of plugins die afbeeldingen in je website met terugwerkende kracht gaan optimaliseren. Dit kan onverwachte resultaten opleveren en het levert extra druk op een webserver op, waardoor providers er ook geen fan van zijn.
  • je zoveel mogelijk al je (java)scripts, stylesheets en zelfs HTML moet minificeren. Hier zijn verschillende (gratis) tools voor te vinden op het Internet, maar in feite komt het neer op het opvullen van lege ruimtes in de voorgenoemde bestanden. Nadeel is dan wel dat ze (voor een developer) lastiger te lezen zijn, maar je browser is er blij mee.
  • je het beste ervoor kunt zorgen dat je bestanden pas worden aangeroepen als ze nodig zijn. Sommige afbeeldingen of scripts zijn niet nodig op elke pagina of pas nodig als de gebruiker naar beneden scrollt (“after the pagefold“) en hoeven daarom niet op voorhand al geladen te worden.

    Leesvoer:

    » Google over lazy loading van afbeeldingen
    » dit artikel over het uitstellen van Javascripts
    » alles over prefetching en preloading, mocht dat nog niet standaard in je HTML pagina’s ingebouwd zijn

WordPress kent diverse plugins waaronder WP Rocket om je met bovenstaande taken te helpen.

Maak je database schoon en snel

Vrijwel elk CMS gebruikt een database en het opvragen van een pagina in de browsers betekent dan meestal een verzoek aan die database, oftewel er wordt een query uitgevoerd. Je developer of systeembeheerder zou die database zo efficient mogelijk ingericht moeten hebben, maar dan nog krijgt hij het zwaar te verduren krijgt bij een overdaad aan zulke queries.

Je database moet nooit meer data bevatten dan absoluut nodig; backup-tabellen van 3 jaar geleden, prehistorische versies van pagina’s, overblijfselen van oude gedeinstalleerde modules werken allemaal vertragend.

Daarnaast moet je ook regelmatig analyseren welke queries voor vertraging tijdens hun uitvoering zorgen. WordPress kent daarvoor de Query Monitor plugin, maar ik ga ervan uit dat elk ander CMS een soortgelijke module of ingebouwde functionaliteit kent. En anders kun je deze analyze rechtstreeks in je database client uitvoeren.

Speciaal voor WordPress

Bouwen met blokken

Allereerst: pagebuilders of blockbuilders of drag-and-drop builders of WYSIWYG-builders of hoe je ze ook wilt noemen… Ik ben geen liefhebber; pagebuilders vertragen de website door toevoegen van extra codetechnische ballast.

En elke pagebuilder kent zijn eigen leercurve en is hoogstwaarschijnlijk niet compatible met een andere, dus overschakelen of je website migreren wordt een drama. Sorry, Elementor en Divi-fans….

Ik begrijp de toegevoegde waarde voor contentbeheerders die geen HTML kennen, maar ik zou altijd kiezen om een developer de HTML te laten maken en dan naar wens herbruikbare blokken toe te voegen in de admin. WordPress kent tegenwoordig de ingebouwde editor Gutenberg en anders kun je altijd de geweldige plugin ACF aanschaffen en maatwerkvelden (laten) definieren.

Plugins in topconditie

Uiteraard verwijder je niet-active plugins uit de WordPress admin, zorg je dat al je plugins up-to-date zijn (net als je WordPress installatie zelf!) en dat verwijderde plugins geen rommel achterlaten in je database. Daar kun je dan weer de plugin Advanced Database Cleaner voor gebruiken.

Omdat niet elke plugin op elke pagina van toepassing is, kun je aan je developer vragen om plugins – net zoals bij scripts en stylesheets – conditioneel te laden. Als je op je homepage geen contactformulier toont, hoeft de formulier-plugin daar ook niet geladen te worden.

Een schone database…deel 2

Elk CMS maakt natuurlijk gebruik van andere database-tabellen en -opslagmethodes, waarvoor soortgelijke tips zullen gelden als die hieronder specifiek voor WordPress genoemde.

Sessies

Elke keer als een gebruiker of een klant inlogt op je website, wordt er een sessie gecreƫerd. Voor deze sessie wordt een record opgeslagen in de database. Als de user weer uitlogt, dan verdwijnt dit record weer en anders schoont WordPress het na verloop van tijd op.

Maar ja, dat gaat weleens mis, waardoor de database van je website na verloop van tijd vol kan zitten met verouderde sessies. Nu kun je daar een plugin voor gebruiken, maar je kunt ook aan je developer vragen om periodiek een query te draaien:

DELETE FROM wp_usermeta WHERE meta_key='session_tokens';

Let op: deze query logt ook alle gebruikers uit die op dit moment zijn ingelogd, dus bij voorkeur laat je deze niet midden op de dag draaien!

Revisies

Elke keer als je een post, een pagina of een product opslaat of bijwerkt, maakt WordPress een revisie voor je aan, zodat je altijd terug kan naar de vorige versie. Na verloop van tijd kan dit natuurlijk in de duizendtallen gaan lopen. Nu kun je revisies uitzetten in je WordPress configuratie:

define('WP_POST_REVISIONS', false);

of een maximum aantal instellen:

define('WP_POST_REVISIONS', 3);

maar wat doe je met de revisies die je in de loop der tijd al hebt verzameld? Daar kun je weer een query op loslaten:

DELETE FROM _wp_2_posts WHERE post_type='revision';

Verwijderde items

Elk item dat je verwijdert via de WordPress admin wordt in de prullebak gestopt en automatisch verwijderd na 30 dagen. Mocht je database daar onnodig vol van lopen (kans is niet heel groot…), zet dan onderstaande regel in je wp-config bestand:

define( 'EMPTY_TRASH_DAYS', 1 ); 

Helaas helpt deze instelling niet te voorkomen dat (restanten van) verwijderde plugins ook opgeschoond worden. WordPress is hier helaas nogal hardnekkig in en daarom moet je dit probleem goed uitpluizen om te voorkomen dat je actieve plugins benadeelt. En sommige plugins vullen niet alleen bestaande tabellen, maar maken ook eigen tabellen aan; deze moeten natuurlijk ook verwijderd worden.

Spam

Als je comments hebt geactiveerd op je WordPress blog, heb je kans op spam. WordPress verwijdert deze spam na 30 dagen, maar in de tussentijd kun je natuurlijk heel wat spam in je database verzamelen. Dus zorg sowieso altijd voor een goede spam plugin en mocht er toch spam tussendoor glippen, dan kun je die wederom verwijderen met een query:

DELETE FROM wp_comments WHERE comment_approved = 'spam'

Wil je helemaal geen reacties op je posts, dan kun je er natuurlijk voor kiezen om de comments gewoon uit te zetten.

Pingbacks en trackbacks

Pingbacks en trackbacks zijn notificaties die blogs elkaar sturen om mede te delen dat je een link hebt geplaatst. Deze notificaties hebben voor de rest weinig nut, maar worden wel opgeslagen in je database. Met andere woorden: uitzetten!

Vind je het fijner om de database met een plugin te onderhouden, dan is WP Optimize de beste keuze, maar zeker niet de enige.

Kleine tips

  • gebruik geen emoji’s, want… waarom zou je eigenlijk?
  • verwijder de versienummers van je scripts, want sommige caching mechanismen struikelen hierover
  • hernoem je wp-admin folder, want daar zijn hackers namelijk gek op en dus trekt deze folder een hoop ongewenst verkeer
  • laat je developer je PHP geheugenlimit verhogen in de wp-config:
    define( 'WP_MEMORY_LIMIT', '256M' );

Tot slot: ere wie ere toekomt

Je website belangrijkste functie is het serveren van content. Je website is dus niet in de eerste plaats bedoelt als CRM-systeem of als mailserver.

Merk je dat er veel vanaf je website gemailed wordt omdat mensen vaak het contactformulier invullen, denk dan eens na over het gebruiken van een extere mailservice zoals Sendgrid (met als bijkomend voordeel uitgebreide rapportages over de aflevering van de mail!).

Wil je graag nieuwsbrieven gaan versturen, wees dan voorzichtig met het installeren van een extra module op je webserver, maar kijk naar externe aanbieders zoals Copernica of Klaviyo.

Hoe handig het ook lijkt om alle functionaliteiten op 1 en dezelfde server te laten draaien, de prestaties van die server zullen omgekeerd evenredig zijn aan de populariteit van al dat moois…

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.