Performance

WordPress performance begint waar caching ophoudt.

Een groot deel van een WordPress-site kan razendsnel uit cache worden geleverd. Maar WordPress Admin, formulieren, API-calls, databasequeries, cronjobs en dynamische WooCommerce-processen moeten daadwerkelijk worden uitgevoerd.

Daarom combineren we caching op meerdere lagen met snelle hardware en een WordPress-stack die ook sterk blijft presteren zodra WordPress zelf aan het werk moet.

Cover voor

Waarom hosting zoveel invloed heeft op performance

Snel waar caching ophoudt

Veel dynamische WordPress-processen zijn afhankelijk van de snelheid waarmee PHP-code, databasequeries en storage-acties worden uitgevoerd. Daarom gebruiken we AMD EPYC-processors op hoge kloksnelheid.

Meer CPU-cores maken een individuele WordPress-request niet automatisch sneller. Bij veel PHP- en databaseprocessen is juist sterke performance per core belangrijk. Dat merk je bijvoorbeeld in WordPress Admin, bij API-calls, zoekopdrachten, formulieren en dynamische WooCommerce-processen.

Geen CPU steal time

Een snelle CPU heeft weinig waarde wanneer je de onderliggende capaciteit voortdurend met andere omgevingen moet delen. Daarom boeken we onze fysieke infrastructuur niet over. De CPU-capaciteit die aan je managed server is toegewezen, blijft beschikbaar voor die server. Zo voorkomen we CPU steal time doordat andere virtuele machines tegelijkertijd dezelfde fysieke resources opeisen. Dat maakt performance voorspelbaarder, juist tijdens drukke momenten.

Razendsnelle NVMe-storage

WordPress leest en schrijft continu data. De database, uploads, caches, logbestanden, plugin-data en tijdelijke bestanden zorgen allemaal voor storage-I/O. Daarom gebruiken we RAID 10 NVMe-storage over PCIe 5. De zeer lage latency en hoge lees- en schrijfsnelheid helpen vooral bij processen waarbij WordPress of de database veel data moet verwerken. Een snelle CPU hoeft daardoor niet onnodig op trage storage te wachten.

De WordPress performance-stack

  • FastCGI Cache

    De snelste WordPress-request is de request die WordPress zelf niet hoeft te verwerken. Daarom gebruiken we FastCGI Cache voor geschikte publieke WordPress-pagina’s. Wanneer een pagina eenmaal door WordPress is opgebouwd, kan Nginx het resultaat tijdelijk opslaan. Bij een volgende bezoeker wordt de HTML direct vanuit de webserver teruggegeven. PHP en de database worden dan volledig overgeslagen. Dat maakt pagina’s niet alleen sneller, maar verlaagt ook de belasting op de server. Hierdoor blijft meer capaciteit beschikbaar voor requests die wél dynamisch verwerkt moeten worden. Dynamische onderdelen, zoals ingelogde gebruikers, formulieren en WooCommerce-processen, kunnen bewust buiten de full page cache worden gehouden.
  • Redis object caching

    FastCGI Cache bewaart complete pagina’s. Redis werkt op een andere laag. WordPress en plugins vragen regelmatig dezelfde gegevens opnieuw op uit de database. Met object caching kunnen veelgebruikte resultaten tijdelijk in het geheugen worden opgeslagen. Daardoor hoeft WordPress dezelfde databasequeries niet bij iedere request opnieuw uit te voeren. Redis is op ons platform als managed onderdeel beschikbaar en kan vooral bij dynamische websites, veel plugins en WooCommerce helpen om de databasebelasting te verlagen.
  • PHP-FPM en OPcache

    Requests die niet uit FastCGI Cache komen, worden door PHP verwerkt. PHP-FPM zorgt voor de afhandeling van deze dynamische PHP-processen. OPcache bewaart gecompileerde PHP-code in het geheugen. Daardoor hoeft dezelfde WordPress-code niet bij iedere request opnieuw volledig te worden gecompileerd. Dat vermindert overhead en helpt WordPress sneller reageren bij dynamische requests.
  • Databaseperformance

    Content, gebruikers, instellingen, metadata, plugin-data en WooCommerce-orders worden opgeslagen in de database. Daardoor heeft databaseperformance veel invloed op dynamische WordPress-sites. Een WordPress-installatie met weinig plugins en eenvoudige content stelt andere eisen dan een platform met veel custom post types, metadata, complexe zoekopdrachten of WooCommerce. Bij performanceproblemen kijken we daarom verder dan alleen CPU-belasting. Trage queries, grote tabellen, plugins, database-indexen en grote hoeveelheden metadata kunnen allemaal invloed hebben op de responstijd. De database draait bij ons als onderdeel van de managed hostingomgeving en wordt 24/7 gemonitord en dagelijks geback-upt.
  • WP-cron en geplande processen

    WordPress voert ook werkzaamheden uit buiten normale paginaweergaven. Denk aan geplande publicaties, e-mail, synchronisaties, imports en taken van plugins. Standaard gebruikt WordPress hiervoor WP-Cron, waarbij geplande taken worden gestart wanneer er verkeer op de website komt. Voor drukke of bedrijfskritische omgevingen kan het interessanter zijn om deze verwerking via een echte servercron te starten. Zo worden geplande taken onafhankelijk van websitebezoek uitgevoerd en heb je meer controle over wanneer achtergrondprocessen draaien.
  • Caching op meerdere lagen

    Performance komt bij WordPress niet uit één enkele cache. FastCGI Cache voorkomt dat complete pagina’s opnieuw door WordPress opgebouwd hoeven te worden. Redis kan veelgebruikte objecten en queryresultaten in het geheugen bewaren. OPcache voorkomt dat PHP dezelfde code steeds opnieuw hoeft te compileren. Samen verminderen deze lagen het werk dat PHP en de database moeten uitvoeren. En zodra caching niet toepasbaar is, zorgen snelle CPU’s, databaseperformance en NVMe-storage ervoor dat WordPress het resterende werk zo snel mogelijk kan verwerken.

WooCommerce is een andere workload

Bij een eenvoudige WordPress-site kan een groot deel van het verkeer uit full page cache komen. Bij WooCommerce ligt dat anders.

Product- en categoriepagina’s zijn vaak goed te cachen, maar winkelwagen, checkout, klantaccount, voorraad en orders zijn persoonlijk en dynamisch.

Daarbij moeten PHP en de database daadwerkelijk aan het werk. Daarom is WooCommerce-performance niet alleen een kwestie van caching. Juist de performance van CPU, database en storage wordt belangrijk zodra een bezoeker richting checkout gaat.

Danny Feskens | Rootnet Managed Hosting

Ervaar het zelf!

Haal het beste uit jouw projecten dankzij de ideale managed hosting setup.
Heb je vragen of wil je onze managed hosting 14 dagen vrijblijvend proberen? Neem gerust contact met Danny op!