wordpress optimaliseren op een vps
Wordpress Optimaliseren Op Een Vps
WordPress optimaliseren op een VPS
Dit artikel beschrijft hoe je WordPress op een VPS optimaliseert voor maximale snelheid — geen plugins, maar server-level configuratie.
Vereisten - WordPress 6.7 of hoger - PHP 8.2 (PHP 8.4 wordt afgeraden door experimentele compatibiliteit) - Nginx als webserver (geen Apache) - Root toegang tot de VPS - SSH-toegang geconfigureerd
Stappen
1. Wijzig PHP naar versie 8.2 en schakel OPcache in
PHP 8.2 biedt de beste balans tussen prestaties en stabiliteit voor WordPress 6.7. OPcache slaat gecompileerde PHP-scripts op in het geheugen.
```bash sudo apt update sudo apt install php8.2-fpm php8.2-cli php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip sudo phpenmod opcache sudo systemctl restart php8.2-fpm ```
2. Configureer Nginx met HTTP/2 en GZIP-compressie
HTTP/2 versnelt parallelle verbindingen. GZIP verkleint HTML, CSS en JavaScript voor overdracht.
Voeg deze regels toe aan `/etc/nginx/nginx.conf`:
```nginx server { listen 443 ssl http2; listen [::]:443 ssl http2; gzip on; gzip_types text/html text/css text/javascript application/javascript image/svg+xml; gzip_min_length 256; } ```
Controleer en herlaad:
```bash sudo nginx -t && sudo systemctl reload nginx ```
3. Activeer page caching op serverniveau
Paginacaching genereert statische HTML-versies. Omzeil PHP en database voor niet-ingelogde bezoekers.
Installeer Nginx FastCGI cache. Maak een cache-map en voeg toe in je server block in `/etc/nginx/sites-enabled/your-site`:
```nginx fastcgi_cache_path /var/cache/nginx 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 http_500 http_503; fastcgi_cache_valid 200 301 302 60m; fastcgi_cache_valid 404 1m;
set $skip_cache 0; if ($http_cookie ~* "wp-admin|wp-login|wordpress_logged_in|comment_author") { set $skip_cache 1; } fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; ```
Test en herlaad:
```bash sudo nginx -t && sudo systemctl reload nginx ```
4. Configureer browsercache met Cache-Control headers
Voorkom dat terugkerende bezoekers statische bestanden opnieuw downloaden.
Voeg aan het server block in `/etc/nginx/sites-enabled/your-site` toe:
```nginx location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp|avif)$ { expires max; add_header Cache-Control "public, immutable"; } ```
5. Converteer afbeeldingen naar WebP en activeer lazy loading
WebP geeft 25-35% kleinere bestandsgroottes dan JPEG zonder kwaliteitsverlies.
Installeer en gebruik `cwebp`:
```bash sudo apt install webp cwebp -q 80 input.jpg -o output.webp ```
Voeg lazy loading toe aan al je `` tags. WordPress 6.7 ondersteunt dit native. Voeg in `functions.php`:
```php add_filter('wp_lazy_loading_enabled', '__return_true'); add_filter('wp_get_attachment_image_attributes', function($attr) { $attr['loading'] = 'lazy'; return $attr; }); ```
6. Ruim de database op — verwijder revisies en spam
Een opgeblazen database vertraagt query’s.
Maak een back-up van je database:
```bash wp db export backup-$(date +%Y%m%d).sql ```
Ruim op:
```bash wp post delete $(wp db query "SELECT ID FROM wp_posts WHERE post_type = 'revision' AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY)" --skip-column-names) wp comment delete $(wp db query "SELECT comment_ID FROM wp_comments WHERE comment_approved = 'spam'" --skip-column-names) ```
Optimaliseer tabellen:
```bash wp db optimize ```
7. Verwijder ongebruikte plugins en thema’s
Ongebruikte code belast de database en vormt een beveiligingsrisico.
```bash wp plugin deactivate --all wp plugin delete plugin-slug wp theme delete theme-slug ```
8. Installeer monitoring met Netdata
Monitor CPU, RAM en schijfruimte in real-time.
```bash bash <(curl -Ss https://my-netdata.io/kickstart.sh) ```
Netdata draait op `http://your-server-ip:19999`. Stel waarschuwingen in voor >80% CPU of >90% schijfgebruik.
Verificatie
Test de snelheid van je site voor en na optimalisatie:
```bash curl -o /dev/null -s -w "Tijd: %{time_total}s\n" https://jouwsite.nl ```
Controleer of caching werkt — de tweede keer moet sneller zijn:
```bash for i in 1 2 3; do curl -o /dev/null -s -w "Poging $i: %{time_total}s\n" https://jouwsite.nl; done ```
Controleer HTTP/2:
```bash curl -I --http2 https://jouwsite.nl | grep -i "HTTP/2" ```
Veelgestelde problemen
Caching werkt niet voor beheerders — Voeg `fastcgi_cache_bypass` met cookie-check toe (zie stap 3). Beheerders herkennen we aan `wordpress_logged_in` cookie.
WebP wordt niet weergegeven in oudere browsers — Gebruik het `
```php add_filter('wp_calculate_image_srcset', function($sources) { foreach ($sources as &$source) { $source['url'] = preg_replace('/\.webp$/', '.jpg', $source['url']); } return $sources; }); ```
Netdata toont hoge CPU na caching — Cache wordt opgebouwd. Monitor 24 uur. Blijft CPU >80%, verlaag `inactive=60m` naar `inactive=30m` in stap 3.
Deze configuratie reduceert laadtijden. Welke optimalisatie heeft bij jou het meeste effect?