Zo boost je de snelheid van jouw Drupal website - Deel 1

Zo boost je de snelheid van jouw Drupal website - Deel 1

10 oktober 2018

Drupal is een populair en veelgebruikt platform om websites op te bouwen. Door het grote ecosysteem errond biedt het ook zeer veel mogelijkheden.

Drupal kan echter ook voor hoofdpijn zorgen zodra er websiteverkeer doorkomt. Een Drupalsite die niet goed geconfigureerd is, presteert namelijk voor geen meter. Gelukkig zijn daar oplossingen voor!

In dit artikel gaan we in op een aantal aandachtspunten voor je een Drupal-site online zet. We focussen ons hierbij vooral op de performantie op aan de serverkant.

Waarom is dit belangrijk?

Een snelle website is van groot belang, onderzoek wijst namelijk uit dat bezoekers afhaken bij langzame websites. Daarbovenop straffen zoekmachines langzame sites ook af. Reden genoeg om ervoor te zorgen dat je website sneller dan het licht is!

Een webpagina opbouwen in Drupal kost tijd. Soms veel tijd. Wat is de oorzaak? Net zoals elk ander modern CMS heeft Drupal heel wat functionaliteiten: dynamische menu's, facet-search, views, ... Deze functionaliteiten zorgen er op hun beurt voor dat elke pagina tientallen SQL-query’s uitvoert wanneer een bezoeker op de website terechtkomt.

Daarnaast heb je wellicht ook nog verschillende templates voorzien, die allemaal gelezen en geïnterpreteerd moeten worden. Het is dus niet verwonderlijk dat het soms 1 tot 2 seconden duurt voordat de pagina naar de bezoeker gestuurd wordt.

Waar moeten we op letten?

Code-optimalisaties

Alles start met de code die je schrijft, dit kunnen we niet genoeg benadrukken! Als je extra functies programmeert in je Drupal-site, zorg er dan voor dat dit op een efficiënte manier gebeurt. Zorg ervoor dat je code volgens de coding standards geschreven is, dat hij logisch is opgebouwd en dat hij mooi gestructureerd is.

Servers

Hier zorgen wij als hostingpartner voor:

  • PHP 7.x met OPcache ingebouwd
  • PHP-FPM in plaats van mod_php
  • MySQL-optimalisatie

OPcache verbetert de PHP-prestaties door voorgecompileerde bytecode op te slaan in het gedeeld geheugen. Hierdoor hoeft PHP niet langer bij elke request het PHP-script te laden en te parseren waardoor er snelheidswinst is.

Modules

Er zijn enkele belangrijke aandachtspunten voor je Drupal modules:

  • Zorg ervoor dat je enkel de modules aanzet die nodig zijn.
    • Zet bepaalde modules uit in een productie-omgeving, zoals Statistics module: Deze gaat voor iedere bezoeker die een pagina bezoekt, een regel in de database schrijven.
    • Update manager: Maak regelmatig tijd vrij om je website up to date te houden, en hou de pagina van Drupal security in de gaten voor nieuwe patches.
    • Database logging: Deze module schrijft alle logging weg in de database. Dit werkt voor kleine sites, maar bij grotere complexere site is dit een serieuze performantie hit. Natuurlijk wil je logging van je site, dus daarom gebruik je hiervoor best de Syslog module.

Cron jobs

Het is belangrijk dat je site periodiek onderhoud verricht op zichzelf. Hiervoor is er standaard Cron voorzien in Drupal. Deze module doet zijn werk, maar bij grotere websites kan het zijn dat je veel extra jobs hebt die moeten worden uitgevoerd (verwerken van berichten uit de queue, ophalen van data via api, …). Verder zijn ook modules zoals Poorman’s Cron af te raden (tenzij je echt geen mogelijkheid hebt om een cronjob in te stellen, maar dan moet je je afvragen of je wel bij de juiste hostingpartner zit 😉). Wij gaan voor de goede ervaring en voeren dus de periodieke taken netjes uit, enkel wanneer het nodig is. Hiervoor is er een module (Elysia cron), die de mogelijkheid geeft een tijdschema mee te geven per taak. Je kan dus per taak zeggen wanneer deze uitgevoerd moet worden. Zo ga je taken hebben die heel frequent uitgevoerd moeten worden, en taken die misschien maar 1 keer in de maand uitgevoerd moeten worden. We laten Elysia cron de “heavy lifting” doen en stellen de cron dan in als volgt:

crontab -e

Dit voegen we toe:

* * * * * /usr/bin/drush --root=/var/web/vdXXXX/public_html elysia-cron

Nu zal drush elke minuut Cron uitvoeren. Elysica cron zal zelf bepalen welke taken uitgevoerd moeten worden, en welke nog niet.

Deel 1

Zo, met voorgaande tips ben je voorlopig even zoet, maar hou zeker onze social media kanalen in de gaten voor deel 2 van dit blogartikel! Wil je ondertussen ook al de meest waardevolle Drupal modules leren kennen? Rep je dan naar dit blogartikel
 

Deel 2

Klaar voor deel 2 van dit blogartikel? Lees 'm hier

Een opmerking of vraag?

Stuur ons een bericht en we koppelen zo snel mogelijk terug.