Jan Reilink

In een tijdperk dat alles snel, sneller en snelst moet, is een trage website not done. WordPress wordt door velen als langzaam bestempeld, maar is dat niet. Waarom is jóuw website dan wel traag? Onze Jan Reilink heeft de antwoorden en weet wat je er zelf aan kunt doen. Vandaag deel 1.

Niemand wil een trage WordPress website. Juist in een tijd waarin alles snel, sneller en snelst moet is een rappe website een must. WordPress wordt door veel mensen als traag bestempeld, maar is dat eigenlijk niet. Vele uninitiated bestempelen PHP op IIS webservers als traag, maar dat is net zo’n fabeltje. Maar waarom is dan net jouw site wel traag?

Aan de hand van een aantal voorbeelden gaan we hier dieper op in en maken wij jouw WordPress website sneller. Hoe? Door mogelijkheden te gebruiken die standaard beschikbaar zijn, zonder al te technisch te worden en in een logische volgorde.

Onderwerpen die wij in dit eerste deel behandelen zijn: WordPress thema’s en plugins, caching, MySQL-database configuratie en PHP. Wat we niet behandelen zijn tips voor websiteoptimalisatie, zoals de volgorde van het laden van bestanden, content offloading en content delivery networks (CDNs). De kwaliteit en dimensies van afbeeldingen, PHP code optimalisatie en het minimaliseren van DNS lookups worden evenmin behandeld.

Uitgaande van de standaard WordPress installatiestappen beginnen we kort met de MySQL-database. Waar example.com staat moet je dat vervangen door jouw eigen domeinnaam.

WordPress database configuratie

Asl je WordPress zelf installeert en geen gebruik maakt van de websitetools van Vevida, dan word je gevraagd naar de Database Host. In andere woorden: via welke hostnaam is jouw MySQL-database bereikbaar? Vul hier te allen tijde de MySQL-hostnaam in die bij jouw domeinnaam hoort! Dat is bijvoorbeeld mysql.example.com.

In sommige uitzonderlijke gevallen moet je tijdelijk onze server hostnamen, zoals net3-nl-mysql-33.vevida.net, gebruiken. Bijvoorbeeld als jouw domeinnaam net is verhuisd. Verander die naam zo snel mogelijk terug naar de hostnaam die bij jouw domeinnaam hoort.

Tip
Verander ook het standaard database tabelvoorvoegsel (Table Prefix) naar iets anders dan wp_. Dit maakt het hackers nét ietsjes moeilijker. Je kunt hierdoor ook eenvoudig meer WordPress websites in één (1) database plaatsen omdat de tabellen dankzij hun voorvoegsel uniek zijn.

Nu is WordPress geïnstalleerd en wordt het tijd om WordPress leuk aan te kleden. Dit doen we met thema’s.

WordPress thema

Je wilt graag een mooi uiterlijk voor jouw website en hebt een mooi thema gevonden of laten ontwerpen. Maar is dat thema wel geoptimaliseerd? En dan bedoelen we niet SEO geoptimaliseerd. Geen enkele webserverconfiguratie is bestand tegen een opgeblazen WordPress thema (bloated theme in het jargon), met als resultaat dat ieder ingrijpen om de snelheid te verbeteren eigenlijk tijdsverspilling is.

Een voorbeeld van een bloated theme is een Premium WordPress Multi-Purpose thema terwijl je eigenlijk alleen een blog wilt.

Als je jouw WordPress website traag vindt dan is het thema één van de eerste zaken die je zou moeten onderzoeken. Enige PHP-kennis is hiervoor noodzakelijk, maar gelukkig bestaan er ook plugins die ons daarbij kunnen helpen. Zie het onderwerp “WordPress traagheid onderzoeken” in deel 2 van deze WordPress is niet traag-serie.

Tip
Verwijder ongebruikte thema’s (zie Plugins). Kies het juiste thema voor het doel van jouw website.

WordPress Plugins

Plugins zijn kleinere stukjes PHP-code die bepaalde functionaliteit aan WordPress toevoegen of bestaande functionaliteit uitbreiden. Erg leuk! Maar helaas zijn het ook vaak bronnen van ergernis en traagheid.

Te veel of te opgeblazen plugins maken jouw WordPress website groot, log en traag. Voor een optimaal presterende WordPress website is het belangrijk om plugins eerst te testen. Presteert de website slecht na het activeren van een nieuwe plugin? Dan kun je in de code op onderzoek gaan of een andere plugin met vergelijkbare functionaliteit proberen.

Houdt plugins altijd up-to-date en gebruik zo weinig mogelijk plugins. Dit geldt uiteraard ook voor widgets.

Tip
Verwijder plugins die je hebt uitgeschakeld en niet meer gebruikt. Dit scheelt – een beetje – webruimte. Het houdt jouw plugins-pagina overzichtelijk. PHP zoekt en indexeert alle aanwezige PHP-bestanden bij http-verzoeken. Door plugins die je niet gebruikt te verwijderen hoeft PHP minder bestanden te zoeken en dat scheelt een aantal milliseconden responstijd.

Deïnstalleer plugin netjes via het WordPress Dashboard. Hiermee zorgt WordPress ervoor dat eventuele gegevens in de database ook netjes verwijderd worden.

WordPress Cron en debug

Voor een zo optimaal en snel mogelijke WordPress website schakel je het beste de debug mode van WordPress uit. Plaats in het wp-config.php bestand:

define('WP_DEBUG', false);

WordPress kent ook een soort van cronjob functionaliteit. Je kunt bepaalde taken registeren als cronjob, die op gezette tijden automatisch moeten worden uitgevoerd. Een groot nadeel van deze functionaliteit is: voor ieder http-verzoek op jouw website wordt wp-cron.php uitgevoerd om na te gaan of er nog een taak moet worden uitgevoerd. Ik herhaal: voor ieder http-verzoek.

Je begrijpt wellicht dat ook dat weer extra responstijd kost en daarom kun je deze functie het beste uitschakelen. Plaats in het wp-config.php bestand:

define('DISABLE_WP_CRON', true);

PHP

Bij Vevida wordt PHP binnen IIS uitgevoerd via de FastCGI-technologie. Hiermee blijft PHP als proces in het geheugen van de webserver geladen en dus sneller uitgevoerd.

Tip
Maak gebruik van een zo hoog mogelijke PHP-versie voor jouw website. Je vindt in ons FAQ-artikel Welke PHP-versie moet ik gebruiken? welke PHP-versies bij Vevida beschikbaar zijn. Neem gerust even contact op met onze klantenservice als je hierover vragen hebt.

Apache versus IIS, mod_rewrite versus Helicon Ape of IIS URL Rewrite

Helaas krijgen wij bij Vevida regelmatig het volgende te horen:

“Verdere optimalisaties kan ik alleen uitvoeren op een Linux server in verband met de modules die daarvoor nodig zijn.”

Voor vrijwel elke Apache module is een IIS web.config equivalent beschikbaar, maar dat valt vaak buiten de comfort-zone van de desbetreffende ontwikkelaar. Voor mod_headers, mod_mime, mod_rewrite en mod_gzip heb je écht geen Apache webserver nodig. Dit is eenvoudig in een IIS web.config configuratiebestand in te stellen.

Wil of kun je een .htaccess bestand liever niet converteren naar IIS web.config? Een module waarvan Vevida gebruikmaakt is beschikbaar en standaard compatible met 99% van de Apache modules. Dit is de module Ape van Helicontech (http://www.helicontech.com/ape/).

Omdat WordPress kan detecteren of het op Windows Server wordt gehost – en in dat geval van web.config bestanden gebruik kan maken – is het verstandig om van één bestandstype gebruik te maken en niet van beide. Dus óf .htaccess óf web.config.

Let op: intussen biedt Vevida ook WordPress hosting op Apache.

Gzip en IIS DynamicCompression

Binnen Vevida’s hostingomgeving staat DynamicCompression standaard uitgeschakeld. Het comprimeren van content met gzip is op IIS verdeeld in twee onderdelen:

  1. Statische content (HTML, javascript, CSS stylesheets)
  2. Dynamische content (PHP-, ASP-, ASP.NET-scripts)

Het comprimeren van statische content is standaard ingeschakeld. Vanwege specifieke problemen met dynamische compressie en ASP-scripts staat dit onderdeel uitgeschakeld. Veel WordPress cache plugins beschikken over functionaliteit om de uitvoer zélf te comprimeren met gzip. Daarom hoeft dit niet ingeschakeld te worden. Heb jij IIS DynamicCompression toch liever ingeschakeld? Neem dan gerust contact op met onze klantenservice.

Caching

Caching is de kunst van het opslaan. Caching gebeurt op vele plekken. Hieronder wat eenvoudigere uitleg en voorbeelden. In het blogartikel Caching concepten in WordPress ga ik er dieper op in.

Browsercache

Browsercache is waarschijnlijk wel één van de meest ideale cache-opties. Stel dat je in staat bent om bepaalde statische content in de browser van de bezoeker op te slaan. Zou dat niet handig zijn? Dan hoeft de browser van de bezoeker niet elke keer die content opnieuw te downloaden. Je kunt hiermee de totale downloadgrootte van jouw website aanzienlijk verkleinen. Onder statische content wordt verstaan: afbeeldingen, JavaScript en CSS-stylesheets.

Met de Internet Information Services (IIS) 7.0 Manager van Microsoft kun je inloggen op jouw website. Hiermee kun je zogenoemde response headers instellen, waaronder Expire Web content after. De browser wordt dan verteld dat statische content voor een bepaalde tijd kan worden opgeslagen omdat deze toch niet veranderd.

Omdat de instellingen gemaakt met de IIS Manager opgeslagen wordt in een web.config-bestand, kunnen we dat natuurlijk ook rechtstreeks doen. De volgende code vertelt de browser dat statische content voor 15 dagen opgeslagen mag worden:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<system.webServer>
		<staticContent>
			<clientCache
				cacheControlMode="UseMaxAge"
				cacheControlMaxAge="15.00:00:00" />
		</staticContent>
	</system.webServer>
</configuration>

Plaats dit bijvoorbeeld in de map wp-content. Je kunt per map een aparte configuratie maken met een web.config-bestand.

WordPress caches

WordPress biedt een groot aantal cacheplugins. Dergelijke plugins slaan bepaalde bewerkingen op in kleine bestandjes. Die bestandjes worden op het bestandssysteem van de website opgeslagen en daardoor sneller beschikbaar. Een tweetal plugins die ik regelmatig aanraad zijn:

  1. Cache-Enabler: https://wordpress.org/plugins/cache-enabler/
  2. WP-Super-Cache: https://wordpress.org/plugins/wp-super-cache/

Helaas veroorzaakt de plugin W3 Total Cache toch vaak problemen doordat het zo groot en uitgebreid is.

Cache-Enabler en WP-Super-Cache slaan de PHP-uitvoer van WordPress op in verschillende HTML cache-bestanden. Lokale cache-bestanden zijn sneller gevonden en naar de bezoeker gestuurd dan dat deze operaties steeds weer opnieuw moeten worden uitgevoerd. Gebruik slechts één van de twee.

Tip
Begin niet te snel met cachingplugins. Je weet pas echt hoeveel toegevoegde waarde deze hebben als de andere optimalisaties uitgevoerd zijn`.

PHP-cache

Binnen PHP zijn verschillende caching-mechanismen beschikbaar: OPCache bijvoorbeeld. Jouw website maakt hier standaard gebruik van.

In heel specifieke gevallen kan het verstandig zijn om van een extra module gebruik te maken, bijvoorbeeld Memcached of Redis voor PHP. Neem contact met onze klantenservice (050-2110100) als je hierover meer informatie wilt ontvangen. Zij helpen je graag verder.

Dit was het voor deze keer. In deel 2 gaan we dieper in op de manier waarop je de WordPress MySQL database in topconditie kunt houden.

Jan Reilink Systeembeheerder

Jan Reilink is ruim 10 jaar in dienst bij Vevida als systeembeheerder. Zijn specialiteiten zijn Windows Server, IIS, PHP, websites, optimalisatie en beveiliging. Daarnaast houdt Jan al jaren een technisch blog saotn.org bij met nieuws en artikelen over deze onderwerpen.