Naar de inhoud
Kennisbank Optimalisatie

Websitesnelheid optimaliseren: Server-side technieken

19 november 2025 7 min lezen Boris Kusters

Als eigenaar van Marketing Maatwerk en developer zie ik het vaak gebeuren: website-eigenaren die dagenlang bezig zijn met het comprimeren van afbeeldingen en het minificeren van CSS, maar de grootste vertragende factor over het hoofd zien. De server.

Frontend optimalisatie is belangrijk, maar als jouw server er 1,5 seconde over doet om de eerste byte (TTFB) te genereren, zal geen enkele hoeveelheid image-compressie je website snel laten voelen. Server-side optimalisatie is de motor van je website; frontend optimalisatie is de laklaag.

In dit artikel duiken we de diepte in. We gaan voorbij de standaard plugins en kijken naar server-configuraties, caching-lagen en database-tuning. Dit is een technische gids voor developers en technisch onderlegde website-eigenaren die het maximale uit hun hosting willen halen.

Waarom Server-Side Optimalisatie Cruciaal Is

De Time To First Byte (TTFB) is de heilige graal van server performance. Het is de tijd die verstrijkt tussen het moment dat een bezoeker op een link klikt en het moment dat de eerste byte aan data binnenkomt bij de browser.

  • Google Core Web Vitals: Hoewel LCP (Largest Contentful Paint) een frontend metric is, is een trage server response direct van invloed op je LCP score.
  • Conversie: Uit onderzoek van Google en Amazon blijkt consistent dat elke seconde vertraging leidt tot 7% conversieverlies.
  • Crawl Budget: Een snellere server kan meer requests per seconde aan, waardoor Googlebot meer pagina’s van je site kan indexeren in dezelfde tijd.

De Streefwaarden:

  • TTFB: < 200ms is excellent. < 600ms is acceptabel. > 600ms vereist actie.
  • Server Processing Time: < 100ms voor simpele requests.
  • Database Query Time: < 50ms per query.

Performance Metingen: De Basislijn Bepalen

Voordat we iets aanpassen, moeten we meten. “Meten is weten” is een cliché omdat het waar is.

Tools Voor Server Performance

  1. WebPageTest (Gratis): De gouden standaard. Kijk specifiek naar de ‘First Byte’ tijd in de waterval-grafiek.
  2. Chrome DevTools: Open de ‘Network’ tab, herlaad de pagina en klik op het eerste document (vaak index of /). Kijk onder de tab ‘Timing’ naar ‘Waiting for server response’.
  3. New Relic / Blackfire (Betaald): Voor professionele profiling. Hiermee zie je exact welke PHP-functie of SQL-query de vertraging veroorzaakt.

Wat moet je meten? Meet altijd de TTFB, het aantal database queries per pagina en het geheugengebruik. Noteer deze waarden als je nulmeting.

Opcode Caching: De Basis (OPcache)

PHP is een geïnterpreteerde taal. Dat betekent dat bij elk bezoek aan je website, de server de PHP-code moet lezen, compileren naar machinecode (opcodes) en dan uitvoeren. Dit is inefficiënt.

OPcache slaat deze gecompileerde opcodes op in het werkgeheugen (RAM). Bij een volgend bezoek wordt de compilatiestap overgeslagen. Impact: 30-50% lagere response tijden direct na inschakelen.

Configuratie (php.ini)

Controleer eerst of het draait met php -v of een phpinfo(); bestand. Hier zijn mijn aanbevolen instellingen voor een productie-omgeving:

Ini, TOML

opcache.enable=1
opcache.memory_consumption=256       ; 256MB RAM reserveren
opcache.interned_strings_buffer=16   ; Ruimte voor strings
opcache.max_accelerated_files=20000  ; Max aantal scripts (ruim voldoende voor WP)
opcache.revalidate_freq=0            ; Check elke request op wijzigingen (zie hieronder)
opcache.validate_timestamps=0        ; Zet op 0 voor maximale performance!

Let op: Als je opcache.validate_timestamps=0 zet (aanbevolen voor productie), kijkt PHP niet meer of bestanden zijn gewijzigd. Je moet de cache handmatig legen na elke deployment of update.

Commando om te flushen (via CLI):

Bash

php -r "opcache_reset();"

Bij de Performance Hosting pakketten van Marketing Maatwerk staat OPcache standaard correct geconfigureerd.

Object Caching: Redis

Database queries zijn vaak de grootste bottleneck in dynamische CMS’en zoals WordPress of Magento. Object Caching slaat de resultaten van zware database queries op in het geheugen.

Ik prefereer Redis boven Memcached vanwege de persistence (data blijft behouden bij herstart) en ondersteuning voor complexere datatypes.

Impact: Kan database load met 50-80% verminderen.

Redis Implementatie voor WordPress

Stap 1: Installatie op server (VPS vereist)

Bash

sudo apt update
sudo apt install redis-server php-redis
sudo systemctl enable redis-server
sudo systemctl restart php8.3-fpm

Stap 2: WordPress Configuratie Voeg de connectie-gegevens toe aan je wp-config.php:

PHP

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
define('WP_REDIS_DATABASE', 0);

Stap 3: Plugin Activeren Gebruik een plugin zoals “Redis Object Cache” om de connectie tussen WordPress en Redis te leggen. Als de connectie slaagt, zie je de “Hit Ratio” in de plugin settings. Een ratio boven de 90% is uitstekend.

Full Page Caching: Nginx FastCGI

Dit is de overtreffende trap. Bij Full Page Caching sla je de volledig gegenereerde HTML-pagina op. Je hebt hier twee niveaus in:

  1. Applicatie-niveau: Plugins zoals WP Rocket. Makkelijk, maar PHP moet nog steeds opstarten om de cache te serveren.
  2. Server-niveau: Nginx FastCGI Cache of Varnish.

Mijn voorkeur: Nginx FastCGI Cache. Dit is extreem snel omdat de request wordt afgehandeld voordat PHP of WordPress überhaupt wordt aangeraakt. Impact: TTFB kan dalen naar < 50ms.

Nginx FastCGI Configuratie Voorbeeld

Plaats dit in je Nginx server block configuratie:

Nginx

# Cache zone definitie (boven server block)
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

server {
    # ... je bestaande config ...
    
    set $skip_cache 0;

    # POST requests niet cachen
    if ($request_method = POST) { set $skip_cache 1; }
    
    # Query strings niet cachen (behalve tracking)
    if ($query_string != "") { set $skip_cache 1; }

    # Ingelogde users en admin niet cachen
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php") { set $skip_cache 1; }
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 200 60m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        
        add_header X-FastCGI-Cache $upstream_cache_status;
    }
}

Belangrijk: Zorg dat je een manier hebt om de cache te legen (purgen) wanneer je content update. Voor WordPress werkt de “Nginx Helper” plugin hier perfect voor.

Database Optimalisatie

Een snelle server met een vervuilde database is als een Ferrari met vierkante wielen.

Query Analyse

Gebruik define('SAVEQUERIES', true); in je wp-config (alleen tijdens dev!) om queries te loggen. Zoek naar:

  • Queries die > 50ms duren.
  • Queries zonder WHERE clause (full table scans).
  • N+1 problemen (dezelfde query die 100x wordt uitgevoerd in een loop).

Indexen Toevoegen

Indexen zijn als de inhoudsopgave van een boek. Zonder index moet MySQL elke rij scannen (Full Table Scan). Gebruik EXPLAIN SELECT ... om te zien of een query een index gebruikt.

Voorbeeld van een index toevoegen voor WooCommerce product lookups:

SQL

ALTER TABLE wp_postmeta ADD INDEX idx_meta_key_value (meta_key, meta_value(20));

Waarschuwing: Voeg niet blindelings indexen toe; ze vertragen INSERT en UPDATE acties.

Opruimen (Cleanup)

WordPress bewaart standaard oneindig veel revisies van berichten. Dit blaast je wp_posts tabel op. Voeg dit toe aan wp-config.php om dit te beperken tot de laatste 5 versies:

PHP

define('WP_POST_REVISIONS', 5);

Draai daarnaast regelmatig een OPTIMIZE TABLE commando via phpMyAdmin of een plugin zoals WP-Optimize.

PHP Performance Tuning (PHP-FPM)

Gebruik altijd de nieuwste stabiele PHP-versie. De stap van PHP 7.4 naar 8.0 gaf al ~10% winst, en PHP 8.1/8.2/8.3 zijn nog sneller. Bij Marketing Maatwerk draaien we standaard op de nieuwste versies.

PHP-FPM Process Manager

De pm (Process Manager) instelling in je www.conf bepaalt hoe PHP processen worden opgestart. Standaard staat dit vaak op dynamic. Voor servers met voldoende RAM (bijv. > 4GB) is static vaak sneller, omdat processen niet continu gestart en gestopt hoeven te worden.

Berekening voor pm.max_children (Static): (Totaal RAM - RAM voor OS/DB) / Gemiddeld RAM per PHP proces

Voorbeeld (4GB VPS, 1GB voor OS, 60MB per proces): (4096 - 1024) / 60 = ~50

Ini, TOML

pm = static
pm.max_children = 50
pm.max_requests = 1000 ; Voorkomt memory leaks door herstart na 1000 requests

HTTP/2, Gzip & Brotli

Dit zijn quick-wins die je in je Nginx of Apache config regelt.

  1. HTTP/2: Zorgt voor ‘multiplexing’, waardoor de browser meerdere bestanden tegelijk over één verbinding kan downloaden.
    • Nginx: listen 443 ssl http2;
  2. Brotli Compressie: De opvolger van Gzip. Comprimeert tekstbestanden (HTML, CSS, JS) zo’n 15-20% beter dan Gzip.
    • Vereist installatie van de Brotli module op de server. Als dit niet kan, is Gzip een must-have fallback.

Checklist: Server Performance Audit

Wil je weten of je server optimaal draait? Loop deze checklist langs.

  • [ ] TTFB: Is deze stabiel onder de 200-500ms?
  • [ ] PHP Versie: Draai je op PHP 8.1 of hoger?
  • [ ] OPcache: Is ingeschakeld en validate_timestamps staat op 0 (in productie)?
  • [ ] Object Cache: Is Redis actief en verbonden?
  • [ ] Page Cache: Wordt HTML gecached (via Nginx/Varnish of plugin)?
  • [ ] Compressie: Wordt content geserveerd met Brotli of Gzip?
  • [ ] Protocol: Gebruikt de site HTTP/2 of HTTP/3?
  • [ ] Database: Zijn revisies beperkt en tabellen geoptimaliseerd?

Conclusie

Server-side optimalisatie is een gelaagd proces. Begin met de basis (PHP-versie, Gzip, Caching plugin). Heb je meer nodig? Implementeer dan Redis en server-side page caching.

Voor de meeste website-eigenaren is het beheren van deze techniek complex en tijdrovend. Daarom zijn al deze technieken (Redis, Nginx caching, OPcache tuning) standaard ingebouwd in de Performance Hosting en Managed VPS pakketten van Marketing Maatwerk.

Wil je zelf niet sleutelen aan config-files, maar wel de snelheid? Kijk dan eens naar mijn Performance Hosting opties.

Verder komen dan lezen

Benieuwd wat dit voor jouw site betekent?

In een half uur kijken we samen naar wat je nu hebt, wat er mist en wat het zou kosten. Geen verkooppraatje, en je zit nergens aan vast.

Eerst een vraag stellen

Een paar zinnen is genoeg.

Velden met een sterretje zijn verplicht.

Je gegevens gebruik ik alleen om je vraag te beantwoorden. Meer daarover in de privacyverklaring.

Liever meteen concreet?

Plan een gratis gesprek.

Een half uur, geen verkooppraatje. We kijken wat je nu hebt, wat je mist en wat het zou kosten.

Uitgebreider: dan weet ik vooraf waar we het over hebben.

Andere producten van Marketing Maatwerk: Mailmigreren.nl (IMAP mailbox-migratie) · Voice Vault (gespreksopnames en notulen) · Sirob AI CRM (AI-CRM voor scale-ups) · boriskusters.nl (blog van Boris)