WordPress PHP Performance Benchmark (2019)

Robert-Jan Budding, 14 januari 2019

PHP 7.3 is op 6 december uitgebracht. Deze versie is inmiddels ook beschikbaar op ons platform. PHP 7.3 biedt een aantal verbeteringen ten opzichte van de vorige versies, waaronder een nieuwe manier om met JSON-errors om te gaan, een flexibelere manier om de heredoc en nowdoc syntax te gebruiken en Argon2 password hash verbeteringen. Omdat WordPress werkt met PHP is het goed om te weten welke versie je het beste kunt gebruiken.

Bijna tegelijkertijd is de officiële release uitgekomen van WordPress 5.0. In deze release wordt de veelbesproken tekst editor Gutenberg standaard ingeschakeld. Wil je weten wat Gutenberg voor jou betekent? Lees dan onze blog over de veranderingen die Gutenberg met zich meebrengt geschreven, en waarom het updaten naar Gutenberg niet altijd verstandig is.

De websites die we hosten moeten zo snel zijn als we technisch mogelijk kunnen maken. Dat is een van onze voornaamste drijfveren. Als echte geeks houden we daarnaast van cijfers. Daarom zijn we, net als bij de release van PHP 7.0, de verschillen in snelheid gaan benchmarken tussen 4 verschillende versies van PHP. Namelijk, PHP 5.6, 7.1, 7.2 en de laatste versie, 7.3. Maar dat is niet alles…

Gutenberg en de Classic Editor getest

Deze versies hebben we getest met de standaard Gutenberg editor en met de Classis Editor plugin, die veel WordPress-gebruikers geïnstalleerd hebben nadat ze naar WordPress 5.0 zijn geüpdatet. Maakt het installeren van de plugin uit voor je snelheid, en zo ja, welke PHP-versie is dan het verstandigst om te gebruiken? Hiervoor hebben we een schone WordPress-installatie gebruikt, met versie 5.0.2, waarin 450 blogposts gepubliceerd zijn. Als thema is het standaard TwentyNineteen gebruikt.

We wilden ook graag weten wat de verschillen in snelheid zijn wanneer je e-commerce oplossing WooCommerce gebruikt. We hebben hiervoor WooCommerce geïnstalleerd, versie 3.5.3, op de laatste versie van WordPress, 5.0.2. Hierin zijn 650 producten geplaatst en 450 blogposts. Ook deze versies zijn gestest met en zonder de Classic Editor plugin. Het standaard Storefront thema is gebruikt.

PHP Benchmark (2019): 5.6,7.1, 7.2 en 7.3

Voor elke test hebben de volgende standaard configuratie gebruikt:

  • Laatste versie VPS One (Linode server, welke draait in Frankfurt)
  • WP-versie: 5.0.2
  • PHP-versies: 5.6, 7.1, 7.2, 7.3
  • Caching: varnish uitgeschakeld door middel van no-cache header
  • OPCache: ingeschakeld volgens de best practices binnen ons eigen platform
  • Plugins: Yoast SEO en onze eigen Warpdrive plugin

Per configuratie zijn er twee testen uitgevoerd:

  • webpagetest.org: 9 testen elk, met optie Stop test at DOM complete en de header. Resultaat is een Load Time, Time to First Byte en Render start. Lager is beter.
  • loader.io: 50 concurrent users voor 1 minuut, met header Cache-Control: no-cache, must-revalidate. Resultaat is een gemiddelde response time, wederom, lager is beter.

De volgende configuraties zijn getest:

  • WordPress 5.0.2
  • WordPress 5.0.2 met Classic Editor plugin, versie 1.3
  • WordPress 5.0.2 met WooCommerce 3.5.3
  • WordPress 5.0.2 met WooCommerce 3.5.3 met Classic Editor plugin, versie 1.3

Behalve de artikelen/producten zijn er verder geen aanpassingen aan de configuraties gedaan.

Download nu gratis de 'Ultieme WordPress Snelheid Checklist'

WordPress 5.0.2 snelheid

De eerste configuratie waar mee aan de slag zijn gegaan is een ‘kale’ WordPress-installatie, met enkel de Yoast SEO en de Savvii Warpdrive plugin daarin geïnstalleerd. Een blogpost-URL is gebruikt om de configuratie te testen.

Tussen PHP 5.6 en 7.1 zien we weinig verschil. PHP 7.2 is al wat sneller, vooral op de Time to First Byte (TTFB), met bijna 25%. Op PHP 7.3 draait de site veruit het snelst, met een 17% snellere laadtijd dan 7.2 en maar liefst 44% snellere TTFB. Hoe zien de resultaten eruit voor Loader.io:

Hier zien we een soortgelijke trend. PHP 5.6 is met een response tijd van 4681 milliseconden veruit het langzaamst. PHP 7.1 is nu wel een stuk sneller met 3414 milliseconden, maar PHP 7.3 wint met 1321 milliseconden. Een verlaging van de laadtijd van bijna 72%.

Duidelijk is dat in beide tests PHP 7.3 veruit de snelste versie van PHP is om je WordPress website met Gutenberg en zonder WooCommerce te draaien. Hoe zit dat als we de Classic Editor inschakelen?

WordPress 5.0.2 met Classic Editor snelheid

Omdat we geïnteresseerd zijn of het inschalen van de Classic Editor plugin (CE) verschil maakt hebben we deze geïnstalleerd in onze testomgeving, de (OP)cache leeggegooid en zijn we opnieuw alle versies van PHP gaan testen. Deze resultaten zien er als volgt uit:

We zien dat de plugin niet veel invloed lijkt te hebben, behalve voor PHP 5.6. Bij de overige versies is het verschil niet zo groot, maar de laadtijden gaan allemaal wel wat achteruit. PHP 7.3 is de snelste in deze test (ruim 21% sneller dan 7.2). Dit geldt ook voor de TTFB, waarbij de verschillen tussen de 7.x versies wel kleiner lijken te worden. Hoe zit dat met de reponse tijden?

Hier is het met name interessant om te zien dat de 7.x versies gemiddeld een snellere response tijd laten zien van meer dan 30%. Er zijn verschillende, onafhankelijke testen van elkaar uitgevoerd, en deze testen laten telkens dezelfde resultaten zien. PHP 5.6 blijft wederom ver achter, het verschil in response tijden tussen 5.6 en 7.3 is nu opgelopen tot 77%.

Deze testen laten iets interessants zien. Wanneer gebruik wordt gebruikt van PHP 7.x worden de response tijden van de website lager (lager is beter). De TTFB wordt wel wat hoger, en tijdens de laadtijden zit weinig verschil. Uit deze test lijkt het dat er nog een tijdje doorgewerkt kan worden met de klassieke editor van WordPress en dat we voor de snelheid zeker niet over hoeven te stappen. Wellicht is het zelfs beter om nog even te wachten gezien de grote verschillen in de response tijden.

We hebben ook onderzocht wat de invloed is van WooCommerce op de verschillende versies van PHP en welke versie je het beste kunt gebruiken hiervoor. Ook vonden we het interessant om te zien of en zo ja, welke invloed het gebruik van de Classic Editor heeft op WooCommerce. We beginnen met de test zonder CE.

WordPress 5.0.2 + WooCommerce 3.5.3 snelheid

Een lege configuratie van WordPress is geïnstalleerd waarop WooCommerce zonder verdere plugins is geïnstalleerd. De webshop is alvast gevuld met 650 artikelen. Welke invloed hebben de laatste versies van PHP op WordPress met WooCommerce.

Waar zonder de WooCommerce plugin PHP 7.3 bij alle tests het snelst was, zien we hier een ander resultaat als het op de laadtijden aankomt. PHP 7.1 wint hier met 5.502. PHP 5.6 is het langzaamst (6.291), maar wordt kort daarop gevolgd door PHP 7.3 (6.247).

Kijkend naar de TTFB zien we wel weer het bekende patroon. PHP 5.6 heeft de hoogte TTFB (0.724), PHP 7.3 de laagste met 0.361. De response tijden laten een soortgelijke trend zien:

Hier valt als eerste uiteraard de afwezigheid van PHP 5.6 data op. Voor de Loader.io test is gebruik gemaakt van een error threshold van 50% bij een timeout van 10 seconden. Wanneer de server niet binnen 10 seconden reageert met een reactie valt het verzoek uit. Wanneer dit in meer dan 50% van de gevallen gebeurt stopt de test.

In deze test zien we dat PHP 7.3 wederom wint met een responstijd van 4282 milliseconden. PHP 7.1 is in deze test sneller dan PHP 7.2.

Het lijkt erop dat de WooCommerce plugin goed reageert op PHP 7.1. Met name de laadtijd van de pagina is goed wanneer PHP 7.1 gebruikt wordt. Kijken we naar TTFB en response tijd, dan is PHP 7.3 bij beide tests het snelst.

Het kan zijn dat je nog geen Gutenberg wilt gebruiken voor je WooCommerce shop. Maakt dit verschil in snelheid?

WordPress 5.0.2 + WooCommerce 3.5.3 + Classic Editor 1.3 snelheid

Net als bij de voorgaande tests hebben we in dezelfde installatie de CE plugin geïnstalleerd en zijn we opnieuw de tests gaan uitvoeren.

Ook hier valt op dat er tussen PHP 5.6 en PHP 7.3 weinig verschil is (6.353 vs. 6.274). Beide PHP-versies zijn het traagst in deze configuratie wanneer het op de laadtijd van de pagina aankomt. PHP 7.1 en 7.2 zijn nagenoeg gelijk aan elkaar, respectievelijk 5.950 vs. 5.954.

Hetzelfde zien we bij deze versies voor de TTFB, ze zijn nagenoeg gelijk aan elkaar. PHP 7.3 is ook hier de winnaar, met 0.384 seconde, tegenover de langzaamste van de vier, PHP 5.6 met 0.712 seconde. Ruim 46% langzamer.

Hoe ziet dit eruit voor de responsetijden?

Wederom zijn er geen testresultaten voor PHP 5.6 door een te hoog error-gehalte. Het lijkt erop dat wanneer er gebruik gemaakt wordt van deze versie WooCommerce bij veel gelijktijdige gebruikers het erg zwaar krijgt.

Wanneer er gebruik wordt gemaakt van PHP 7.1 of PHP 7.2 gaan de response tijden er wederom op achteruit. Voor PHP 7.1 is het verschil het grootst met 45%. PHP 7.2 is 20% sneller zonder de CE-plugin. Kijkend naar de winnaar, PHP 7.3, zien we dat de responsetijden nagenoeg gelijk blijven, 4282 milliseconden versus 4268.

Welke PHP-versie is het snelste voor WordPress?

We hebben onderzocht wat de verschillen in snelheid zijn voor vier versies van PHP: 5.6, 7.1, 7.2 en de laatste 7.3. Alhoewel we 5.6 gaan verwijderen van ons platform omdat deze End of Life wordt (en daardoor geen nieuwe beveiligingsupdates meer krijgt, net als we bij versie 7.0 inmiddels al gedaan hebben), hebben we deze toch meegenomen om te zien wat de daadwerkelijke verschillen zijn tussen de vorige major release 5, en de huidige, 7.

De testomgeving bestond uit een WordPress 5.0.2 installatie. Naast deze standaard installatie  hebben we deze ook getest met de laatste versie van WooCommerce.

Omdat de nieuwe tekstverwerker van WordPress, Gutenberg, nogal wat stof doet opwaaien, hebben we de configuraties ook getest met de Classic Editor plugin. Deze vervangt de blokkeneditor van Gutenberg met de klassieke editor, het zit al een beetje in de naam verborgen 😉.

De volgende tabel geeft een overzicht van alle resultaten:

 

 WordPress + WooCommerceWordPress + WooCommerce + CEWordPressWordPress + Classic Editor
PHPLoad Time (sec.)TTFB (sec.)Response Time (ms.)Load Time (sec.)TTFB (sec.)Response Time (ms.)Load Time (sec.)TTFB (sec.)Response Time (ms.)Load Time (sec.)TTFB (sec.)Response Time (ms.)
5.66.2910.7246.3530.7122.0620.45146812.2240.5654322
7.15.5020.53157035.9500.44483122.0820.49634142.0990.2912020
7.25.8550.41360845.9540.44273441.8930.37527201.9600.3441905
7.36.2470.36142826.2740.34842681.5470.21113211.5470.2821015

De dikdrukte resultaten zijn de beste tijden per categorie. Hieruit valt dus meer dan duidelijk te halen dan PHP 7.3 de snelste versie van PHP is. Met andere woorden, je website laadt een stuk sneller wanneer je gebruikt maakt van deze versie van PHP.

Wil je (nog) geen gebruik maken van Gutenberg? Gebruik dan de Classic Editor. In dat geval is het zeker verstandig om de PHP 7.3. te gebruiken. Deze heeft het minst ‘last’ van deze plugin, en lijkt zonder WooCommerce installatie zelfs wat sneller te reageren.

Take aways

De belangrijkste take aways op een rijtje:

  • PHP 7.3 is bijna altijd de snelste keus. Draait je website nog op PHP 5.6? Behalve dat je website dan langzamer dan nodig is, is deze waarschijnlijk ook onveilig. PHP 5.6 ontvangt namelijk geen nieuwe veiligheidsupdates meer.
  • Test altijd voordat je updatet. Vooral wanneer je van versie 5 naar 7 gaat. Het is mogelijk dat bepaalde onderdelen van je site niet goed meer werken. Gelukkig hebben we daar een goede oplossing voor: Staging. Zet je website eerst op een staging-omgeving zodat je met de nieuwe versie kunt testen en als alles werkt naar behoren, kun je met een gerust hart updaten.
  • De laatste versies van PHP zijn bij ons beschikbaar, dus ook 7.3. De oude versies verwijderen zo snel mogelijk van ons platform, om veiligheidsproblemen zoveel mogelijk te voorkomen. Ben je klant bij ons en nog niet over op minimaal PHP 7.1? Wacht dan niet en ga vandaag nog testen!
  • Naast PHP zijn er nog andere factoren om je WordPress website sneller te maken (hadden we al gezegd dat we van snelheid hielden😊?). Lees daarvoor ook de Ultieme Snelheid Checklist.

Download nu gratis de 'Ultieme WordPress Snelheid Checklist'

Leave a reply