Zes oplossingen voor een betere Drupal 7 performantie op kleine websites

11 november 2014
Performance

Drupal is een heel veelzijdig CMS. De grootste keerzijde van die veelzijdigheid is de soms belabberde performantie. Vooral websites met heel veel functionaliteit en websites met weinig bezoekers (waarbij de cache niet gevuld geraakt) hebben hier last van. Gelukkig zijn er enkele oplossingen om de performantie te verbeteren. 

Grote bedrijven met websites met veel trafiek hebben tools zoals Varnish tot hun beschikking. Maar wat als je een kleine website hebt, voor jezelf of voor een KMO, en je wil de performantie verbeteren? Wat zijn de opties dan? 

Limiteer het aantal modules 

Hoe meer modules, hoe trager je website wordt. Ik verkies daarom te werken met een kale Drupal of een basis installatieprofiel en enkel modules te installeren die ik nodig heb. Het installeren en activeren van een module is met drush toch een eitje. En ook naar migratie en back-ups toe is het een voordeel om een kleine installatie te hebben. 

Modules uitschakelen 

Verschillende modules heb je niet nodig in productie: 

  • De Update Manager
  • Devel voor tijdens de ontwikkeling
  • Alle UI bij modules (bijvoorbeeld Views UI of Field UI). 

Een gemakkelijke shortcut om die modules aan- en uit te schakelen is via het admin_menu en dan disable developer modules. 

Performance pagina

Dit is een noodzakelijke stap die beschikbaar is in de user interface. Vink alle opties voor caching aan. Deze instellingen zorgen ervoor dat CSS bestanden en Javascript bestanden gecomprimeerd worden. Caching betekent dan weer dat een pagina die uit de database gegenereerd wordt in gewone html wordt weergegeven, zodat het volgende paginabezoek veel sneller kan verlopen. 

Kies 15min en 1dag bij de caching verversing voor kleinere websites: 

Drupal caching

Views Cache 

Bijna alle Drupal 7 websites maken gebruik van Views. Views is nodig en nuttig, ook voor complexe queries. De andere zijde van de medaille is de algemeen slechte performantie van Views. Gelukkig bestaat er iets als Views Caching. 

Ga naar je View, klik op Caching onder Advanced en kies: 

  • Time-Based
  • 5min / 5min 

Views caching

Cron uitvoeren buiten de website 

Je kan cron instellen om iedere dag te lopen. Maar je hebt geen controle wanneer deze loopt. Bij voorkeur laat je deze ’s nachts lopen als er toch niet veel bezoekers zijn. Je kan daarvoor een module zoals Alysia cron gebruiken maar ik verkies de lichtgewicht versie met de command line:  

Log in met ssh op je hosting. 

Kijk na of er al crontabs lopen (met de -l of launch switch, dus een kleine L): 

crontab -l

En controleer de locatie van wget

which wget 

Normaal is de output hier /usr/bin/wget

Wijzig nu het bestand (met de e- of edit switch): 

crontab -e

Voeg een regel in met  

i 

Voeg nu de gewenste regel toe:

0 4 * * * /usr/bin/wget -O - -q -t 1 http://www.example.com/cron.php?cron_key=CRONKEY

(Je cron key kan je vinden onder admin > reports.)

Doe vervolgens:

Esc

Typ vervolgens een commando om op te slaan en uit te loggen:

:wq

En dan: 

Enter

Deze regel specifieert dat cron om 04:00 moet draaien, ervan uitgaande dat er op die momenten bitter weinig verkeer is. De key moet opgezocht worden in de Drupal configuratie onder reports. 

Boost

Wil je verder gaan, dan kan je Drupal Boost opzetten. Als de Boost cache warm is, wordt een platte html-pagina getoond aan de bezoeker zonder via de database te passeren. Sneller kan niet. 

Doe hiervoor het volgende: 

  • Installeer de module en zet ze aan 
  • Check dat Clean URL’s aanstaan 
  • Check dat de map /cache de juiste rechten heeft: 775 (de Boost module maakt die map aan)
  • Schakel de Core page en block cache uit. Dat klinkt raar maar is logisch. Boost neemt dit immers over. 
  • Plak de code gevonden onder .htaccess settings onder de Boost module in je .htaccess bestand (maak vooraf een backup), net onder # RewriteBase / 

Boost is vooral een aanrader voor kleinere websites waar de inhoud weinig wijzigt. 

Het heeft soms wat neveneffecten: als de cache niet warm is, dan zijn de pagina’s heel traag. Er wordt standaard immers verwacht dat bezoekers de cache opwarmen. 

Er zijn wel manieren om dat te voorkomen.

  • Je kan Rules opzetten en ervoor zorgen dat de pagina’s die nieuw zijn of pagina’s die gewijzigd worden direct gecached worden. Zie daarvoor dit interessant artikel van Vacilando.
  • Je kan ook ’s nachts een crawler laten lopen die alle pagina’s in de cache zet (dit kan ook zonder Boost overigens). De lijst met URL’s haal je dan uit de XML Sitemap module. Voor meer info over deze methode, zie dit artikel van Tom Roelandts

Reacties

Een jaar later, en Varnish is standaard bij goedkope hosting. Hoera! ;-) http://gandi.net
Blijft een leerrijke post..

Reageer

Plain text

  • Geen HTML toegestaan.
  • E-mail- en internetadressen worden automatisch aanklikbaar.
  • Regels en alinea's worden automatisch gesplitst.