Je winkelwagen is leeg
Producten die je toevoegt, verschijnen hier.
Met zeven bewezen VPS performance optimaliseren tips verlaag je TTFB met 80%. FastCGI cache, OPcache en Redis: concrete instellingen die je direct toepast.
Samenvatting: VPS performance optimaliseren tips
De zeven configuratielagen met de meeste impact: PHP OPcache (30-50% snellere uitvoering), FastCGI page cache (TTFB van 912ms naar 178ms), Redis object cache (60-90% minder databasequeries), MariaDB buffer pool tuning, Gzip/Brotli-compressie, BBR TCP-congestion control en een CDN als geografische multiplier. Geen hardwareupgrade nodig, alleen de juiste instellingen.
De effectiefste VPS
KeurigOnline zegtVPS
KeurigOnline zegtNginx
KeurigOnline zegtPHP
KeurigOnline zegtDatabase
KeurigOnline zegtTTFB
De aanpassingen zijn gestructureerd in zeven lagen, van de webserver bovenaan tot het TCP-protocol onderaan. Elke laag is onafhankelijk toepasbaar en levert direct meetbaar resultaat. Begin bij de lagen met de hoogste impact-per-moeite-ratio en werk van daaruit verder.

Elke 100 milliseconden extra laadtijd verlaagt je conversieratio met gemiddeld 7%.[1] Een website die in één seconde laadt, converteert 2,5 keer beter dan een site die er vijf seconden over doet.[3] Zelfs een verbetering van 0,1 seconde verhoogt de gemiddelde orderwaarde met 9,2%.[2] Snelheid is geen technisch luxeprobleem. Het is een directe omzetfactor. Lees meer over de relatie tussen paginasnelheid en verkopen in onze gids over conversie-optimalisatie.
Naast conversie telt snelheid mee voor je Google-positie. Page experience signals, waaronder Core Web Vitals
KeurigOnline zegtCore Web Vitals
KeurigOnline zegtLCP
Het onderscheid met gedeelde hosting is dat op een VPS de winst volledig in configuratie zit. Je hebt root-toegang en kunt elke instelling aanpassen. De standaardinstellingen van de meeste Linux-distributies zijn gericht op compatibiliteit, niet op performance. Dat betekent dat je de verbeteringen al betaald hebt met je maandelijkse VPS-kosten. Ze wachten alleen op activering.
De benchmark die dit artikel als referentie gebruikt: een standaard LEMP-stack op een 4 GB VPS, geoptimaliseerd met de zeven lagen hieronder. Resultaat: TTFB van 912ms naar 178ms, doorvoer van 12 naar 284 requests per seconde, CPU-gebruik bij 50 gelijktijdige requests van 97% naar 22%.[5]
Nginx is event-driven: één process verwerkt duizenden gelijktijdige verbindingen zonder per verbinding een thread te forken. Apache
KeurigOnline zegtApache
KeurigOnline zegtDirectAdmin
KeurigOnline zegthtaccess
De standaardinstelling worker_processes 1 benut slechts één CPU-kern. Zet dit op auto zodat Nginx automatisch één worker per beschikbare kern start:
worker_processes auto;
events {
worker_connections 1024;
use epoll;
multi_accept on;
}
worker_connections 1024 is het maximum aantal verbindingen per worker. Op een 4-core VPS geeft dit 4.096 gelijktijdige verbindingen. use epoll activeert het efficiëntste Linux-I/O-event model. multi_accept on laat elke worker meerdere verbindingen tegelijk accepteren in plaats van één per iteratie.
Gzip-compressie
KeurigOnline zegtGZIP-compressie
KeurigOnline zegtHTML
KeurigOnline zegtCSS
KeurigOnline zegtJavaScript
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json
application/javascript application/xml+rss text/javascript;
Brotli
KeurigOnline zegtBrotlingx_brotli-module. Gebruik je Cloudflare als CDN
KeurigOnline zegtCDN
Met open_file_cache bewaart Nginx bestandsdescriptors in het geheugen zodat het bestandssysteem niet bij elke statische request opnieuw bevraagd wordt:
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
HTTP
KeurigOnline zegtHTTPhttp2 toe aan de listen-directive van je HTTPS-server:
listen 443 ssl http2;

Zonder OPcache compileert PHP bij elke request de broncode opnieuw naar bytecode. Die stap is nutteloos: de broncode verandert niet tussen requests. OPcache slaat de gecompileerde bytecode op in gedeeld geheugen zodat PHP die stap overslaat. Resultaat: 30 tot 50% snellere PHP-uitvoering bij alle dynamische verzoeken.[7]
Voeg de volgende regels toe aan /etc/php/8.x/fpm/conf.d/10-opcache.ini (pas het versienummer aan):
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=0
memory_consumption=256 reserveert 256 MB voor de bytecode-cache
KeurigOnline zegtCache
KeurigOnline zegtWooCommercemax_accelerated_files=10000 bepaalt hoeveel PHP-bestanden tegelijk gecacht kunnen worden. revalidate_freq=60 controleert elke 60 seconden of bronbestanden veranderd zijn. Op een productieserver is 60 seconden vertraging acceptabel. Op een ontwikkelserver zet je dit op 1 of 0 om de cache meteen te invalideren bij bestandswijzigingen.
PHP-FPM verwerkt PHP-requests via een pool van child processes. De kritieke instelling is pm.max_children: het maximum aantal gelijktijdige PHP-processes. Te laag geeft request-queuing en TTFB-pieken. Te hoog laat de server wisselen naar swap, wat de performance totaal breekt.
De formule: max_children = beschikbaar RAM voor PHP / gemiddeld geheugengebruik per PHP-process. Een typisch WordPress
KeurigOnline zegtWordPress
KeurigOnline zegtVPS
3.000 MB / 50 MB = 60 max_children
Stel de pool in met pm=dynamic voor adaptief gedrag in /etc/php/8.x/fpm/pool.d/www.conf:
pm = dynamic
pm.max_children = 60
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
pm.max_requests=500 recycles een child process na 500 afgehandelde requests. Dat voorkomt geheugenlekkage die bij langdurig draaiende PHP-applicaties op de achtergrond optreedt. Controleer na een dag het werkelijke geheugengebruik per process met ps aux | grep php-fpm en pas max_children aan als de piek boven je berekende maximum uitkomt.

Caching is de optimalisatielaag met de grootste absolute impact. OPcache versnelt PHP
KeurigOnline zegtPHP
FastCGI cache slaat de volledige HTML-uitvoer op schijf op. Voor een anonieme bezoeker antwoordt Nginx direct vanuit de schijfcache zonder PHP of de database te raadplegen. TTFB daalt typisch van 800 tot 900ms naar onder de 200ms voor anonieme bezoekers.[5] In een lab-benchmark steeg de doorvoer van 9,2 requests per seconde zonder cache naar 699 requests per seconde met FastCGI cache, een toename van meer dan 7.500%.[6]
Configureer de cache-zone in het http-blok van /etc/nginx/nginx.conf:
fastcgi_cache_path /tmp/nginx-cache levels=1:2
keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout updating invalid_header;
fastcgi_cache_lock on;
In het server-blok van je vhost voeg je bypass-regels toe voor ingelogde gebruikers en beheerderssessies:
set $skip_cache 0;
if ($request_method = POST) { set $skip_cache 1; }
if ($query_string != "") { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wordpress_logged_in") {
set $skip_cache 1;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
add_header X-Cache $upstream_cache_status;
Met Cloudflare als CDN ervoor daalt de edge-TTFB voor anonieme bezoekers verder naar 30 tot 50ms.[5] In onze gids voor WordPress sneller maken lees je hoe je FastCGI cache combineert met WordPress-plugins als WP Rocket of W3 Total Cache, en hoe je cache-invalidatie regelt bij publicatie van nieuwe content.
Ingelogde gebruikers bypassen de page cache. Zonder aanvullende maatregelen voert WordPress elke databasequery opnieuw uit per request. Redis lost dit op: het object cache-subsysteem van WordPress slaat queryresultaten op in Redis. Het gevolg is 60 tot 90% minder databaseaanvragen voor ingelogde sessies.[7]
Stel het geheugenplafond in via /etc/redis/redis.conf:
maxmemory 256mb
maxmemory-policy allkeys-lru
Voeg daarna de verbindingsgegevens toe aan wp-config.php:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_CACHE_KEY_SALT', 'jouw-unieke-site-sleutel');
Installeer de Redis Object Cache-plugin en activeer de persistent object cache via de plugininstellingen. Het verschil tussen de drie cachelagen in één zin: OPcache = PHP-bytecode in RAM, FastCGI cache = volledige HTML-pagina op schijf, Redis = databasequeryresultaten in RAM.
De database is het meest verwaarloosde bottleneck op een VPS. Zelfs met een goed geconfigureerde cachinglaag bereiken sommige queries de database, en die moeten dan snel verwerkt worden. De drie directe ingrepen hieronder hebben het hoogste rendement voor de laagste configuratiemoeite.
De InnoDB buffer pool is het werkgeheugen van MariaDB en MySQL
KeurigOnline zegtMySQL
Voeg dit toe aan /etc/mysql/mariadb.conf.d/50-server.cnf (of /etc/my.cnf):
[mysqld]
innodb_buffer_pool_size = 2G # 70% van ~3 GB beschikbaar RAM
innodb_buffer_pool_instances = 2 # één per GB buffer pool
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 2 # lichte durability trade-off, hogere snelheid
Gebruik je de VPS voor zowel web als database
KeurigOnline zegtDatabase
KeurigOnline zegtNginx
De query cache is gedepreceerd vanaf MariaDB 10.4 en veroorzaakt vergrendelingsconflicten bij schrijfintensieve workloads. Zet hem expliciet uit:
query_cache_type = 0
query_cache_size = 0
Activeer tegelijk de trage-querylog om indexmissers zichtbaar te maken:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
Queries die langer dan 1 seconde duren of geen index gebruiken, schrijft MariaDB naar het logbestand. Analyseer het logbestand met pt-query-digest (Percona Toolkit) om de zwaarste queries te vinden en te prioriteren voor indexoptimalisatie.
Tip: Voer periodiek OPTIMIZE TABLE wp_options en OPTIMIZE TABLE wp_postmeta uit op drukke WooCommerce-installaties. Deze tabellen fragmenteren snel door frequente insert- en delete-operaties. Een geoptimaliseerde tabel kan queries 2 tot 5 keer sneller beantwoorden zonder enige applicatiewijziging.
De minst bekende maar eenvoudigste optimalisatie in dit artikel: twee sysctl-regels die het TCP-gedrag van je server fundamenteel verbeteren. Het risico is minimaal. De winst bij verbindingen met hogere latentie of pakketverlies bedraagt 20 tot 40% betere doorvoer.[7]
BBR (Bottleneck Bandwidth
KeurigOnline zegtBandwidth
KeurigOnline zegtKernel
Voeg twee regels toe aan /etc/sysctl.conf:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
Laad de wijziging direct, zonder herstart:
sysctl -p
# Verifieer dat BBR actief is:
sysctl net.ipv4.tcp_congestion_control
# Verwachte output: net.ipv4.tcp_congestion_control = bbr
De volgende instellingen verbeteren de stabiliteit bij verkeerpieken en houden HTTP/2-verbindingen snel bij hergebruik:
# Voorkomt herstart van TCP slow-start na een korte verbindingsstilte
net.ipv4.tcp_slow_start_after_idle = 0
# Grotere accept-queue voor verkeerpieken
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# Hogere socketbuffers voor doorvoer op snelle verbindingen
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
tcp_slow_start_after_idle=0 is bijzonder relevant voor HTTP/2-verbindingen die langere tijd open blijven maar pas verkeer genereren wanneer een bezoeker een nieuwe pagina opent. Zonder deze instelling herstart TCP bij elke nieuwe burst met een lage beginsnelheid en moet die opbouwen, wat TTFB bij terugkerende bezoekers onnodig verhoogt.
Servertuning elimineert verwerkingstijd. Een CDN elimineert afstand. De twee zijn complementair: een geoptimaliseerde server in Amsterdam antwoordt nog steeds vanuit Amsterdam, ook voor bezoekers in Singapore of New York. Een CDN plaatst gecachede content op edge-nodes dicht bij de bezoeker.
De mediane TTFB bij sites zonder CDN is 1,2 seconde. Met CDN is dat 340ms, een factor 3,5 verbetering, gemeten over miljoenen sites via HTTP Archive.[8] Voor de meeste kleine en middelgrote bedrijven met een Nederlandse doelgroep is Cloudflare's gratis tier de laagdrempeligste keuze: DNS
KeurigOnline zegtDNS
Cloudflare APO (Automatic Platform Optimization) cached de volledige pagina op Cloudflare's edge, inclusief dynamische WordPress
KeurigOnline zegtWordPress
KeurigOnline zegtCache
Brotli
KeurigOnline zegtBrotli
KeurigOnline zegtCSS
KeurigOnline zegtCDN
Cloudflare gratis tier: wat je krijgt
Elke laag in dit artikel is meetbaar. Leg je beginwaarden vast voordat je wijzigingen aanbrengt, zodat je de impact van elke stap afzonderlijk kunt beoordelen. Onze complete TTFB-gids legt de metric diepgaand uit als je de begripsvorming wilt verdiepen.
Controleer met één curl-commando of de FastCGI cache actief is en of je een cache-HIT of MISS ontvangt:
curl -sI https://jouwdomein.nl | grep -i 'x-cache\|age\|cf-cache\|server-timing'
X-Cache: HIT bevestigt dat Nginx de response vanuit cache serveerde. Age: 347 betekent dat de gecachede versie 347 seconden oud is. Een ontbrekende X-Cache-header, of X-Cache: MISS, betekent dat de cache niet actief is of dat het verzoek een bypass-conditie raakte (ingelogde gebruiker, POST-request, querystring).
GTmetrix en WebPageTest geven TTFB
KeurigOnline zegtTTFB
| Metric | Goed | Verbetering nodig |
|---|---|---|
| TTFB | < 200ms | > 500ms |
| LCP | < 2,5s | > 4,0s |
| Doorvoer (kleine VPS) | > 100 req/sec | < 20 req/sec |
# Apache Bench: 1.000 requests met 50 gelijktijdige verbindingen
ab -n 1000 -c 50 https://jouwdomein.nl/
# wrk: 30 seconden, 4 threads, 50 verbindingen
wrk -t4 -c50 -d30s https://jouwdomein.nl/
De output toont requests per seconde, gemiddelde latency en het percentage mislukte requests. Voer de test zowel voor als na elke optimalisatielaag uit voor een eerlijke vergelijking. De combinatie van ab voor snelle throughput-checks en WebPageTest voor real-browser metrics geeft het meest complete beeld.
wget https://raw.githubusercontent.com/MySQLTuner/mysqltuner-perl/master/mysqltuner.pl
perl mysqltuner.pl
MySQL
KeurigOnline zegtMySQL
FastCGI page cache heeft de grootste directe impact. Het bypasses PHP volledig voor anonieme bezoekers en verlaagt TTFB typisch van 800 tot 900ms naar onder de 200ms, een verbetering van 80% zonder extra hardware. Combineer het meteen met PHP OPcache, zodat ook de requests die de cache missen, zoals POST-verzoeken en beheerderspagina's, aanzienlijk sneller worden verwerkt.
OPcache slaat gecompileerde PHP-bytecode op in RAM en elimineert hercompilatie bij elke request. Dat geeft 30 tot 50% snellere PHP-uitvoering voor alle verzoeken die PHP raken. FastCGI cache slaat de volledige HTML
KeurigOnline zegtHTML
Ja, als je website ingelogde gebruikers heeft, zoals WooCommerce
KeurigOnline zegtWooCommerce
Voor hoog-concurrent verkeer en FastCGI caching: ja. Nginx is event-driven en verwerkt duizenden gelijktijdige verbindingen in één process met minimale CPU- en RAM-belasting. Apache
KeurigOnline zegtApache
KeurigOnline zegtDirectAdmin
KeurigOnline zegthtaccess
Ja, absoluut. Servertuning verlaagt de verwerkingstijd, maar verkleint de fysieke afstand tussen server en bezoeker niet. Een CDN plaatst gecachede content op edge-nodes dicht bij de bezoeker. De mediane TTFB daalt van 1,2 seconde zonder CDN naar 340ms met CDN, een factor 3,5. Zelfs voor bezoekers die geografisch dicht bij je server zitten, offloadt een CDN statische bestanden en verlaagt de druk op je VPS bij piekverkeer.
BBR is Google's TCP-congestiecontrol-algoritme dat 20 tot 40% betere doorvoer geeft bij hogere netwerklatentie of pakketverlies. Inschakelen kost twee regels in /etc/sysctl.conf en één sysctl -p om ze direct te activeren. Het risico is minimaal: BBR zit standaard in de Linux-kernel
KeurigOnline zegtKernel
De zeven optimalisatielagen in dit artikel zijn niet gelijkwaardig. Sommige leveren bij minimale moeite het grootste resultaat. Werk ze af in volgorde van impact:
VPS performance optimaliseren: volgorde van impact
my.cnf.worker_processes auto.Begin met curl -sI https://jouwdomein.nl om je huidige TTFB en cacheheaders in kaart te brengen. Die beginmeting is je nulmeting. Elke optimalisatie die je daarna toepast, is direct meetbaar in de output van datzelfde commando. Bij KeurigOnline heb je op iedere VPS volledige root-toegang en controle over alle instellingen in dit artikel.