Boost de snelheid van Drupal 8 met BigPipe

18 Dec 2015

Joris Snoek - Business Dev
+31 (0)20 - 261 14 99

Bijna gelijktijdig met het uitkomen van Drupal 8, werd beta1 van de BigPipe module vrijgegeven. Een veelbelovende techniek om Drupal 8 nog sneller te maken.

Wat is BigPipe

BigPipe is een techniek om een pagina gefaseerd op te bouwen, waarbij componenten (blokjes informatie) binnen de pagina op volgorde van snelheid direct getoond worden. Hierdoor krijgt de bezoeker snel resultaat en heeft hij niet het idee dat hij moet wachten. Wat een positieve boost geeft in gebruikerservaring.

BigPipe werd als eerste door Facebook ontwikkeld. In deze techniek wordt een web pagina dus opgeknipt in kleine delen (componenten) en de ‘pipeline’ zorgt ervoor dat de componenten op volgorde van snelheid getoond worden.

Dit is soortgelijk aan het proces van moderne microprocessoren: meerdere instructies gaan via een pipeline door de verschillende ‘execution units’ van de processor om een optimaal resultaat te halen.

LinkedIn maakt gebruik van deze BigPipe techniek in het Play Framework en NodeJS heeft zijn eigen variant. Nu is Drupal 8 dus ook 'BigPipe ready'.

BigPipe in Drupal

BigPipe is dus bedoeld om de blokken binnen een webpagina in Drupal - voor ingelogde bezoekers - sneller te laden. Het is de overtreffende trap voor Drupal 8 zijn Page caching en Dynamic Page Cache. Page cache is bedoeld voor uitgelogde bezoekers en heeft verder geen relatie met BigPipe, Dynamic Page Cache is ontwikkeld voor ingelogde bezoekers: als een pagina gecachet is in Dynamic Page Cache, dan kan BigPipe de ’main content’ een stuk sneller uitserveren.

Voor Drupal is de BigPipe voor ontwikkeld door Wim Leers en Fabian Franz. Je kunt deze gebruiken zonder dat je de BigPipe techniek echt hoeft te kennen. De Drupal 8 API faciliteert alles voor je: Drupal weet welke pagina componenten slecht te cachen zijn, geheel niet te cachen zijn en welke pagina componenten geïsoleerd te genereren zijn. Al deze informatie wordt gebruikt om het uitserveren van de pagina componenten te optimaliseren middels BigPipe.

De module kent momenteel geen configuratie scherm, wel API documentatie.

BigPipe en proxies

Maak je gebruik van een reverse proxy zoals Varnish, let dan even op: die zou de Drupal response niet mogen bufferen, omdat het BigPipe proces dan niet goed werkt en je weer een mindere performance zult ervaren. Je kunt Varnish BigPipe compatible maken met behulp van de volgende VCL:

vcl_fetch {
if (beresp.Surrogate-Control ~ "BigPipe/1.0") {
set beresp.do_stream = true;
set beresp.ttl = 0;
}
}

Andere proxies en CDN’s zul je op soortgelijke manier moeten instellen. Dit alles staat tevens in de readme.md van de Drupal BigPipe module.

Wrap up

Ik verwacht dat in de toekomst vele Drupal websites - met ingelogde bezoekers - gebruik gaan maken van deze techniek. Als het in Drupal 7 beschikbaar was, hadden we hem meteen geïmplementeerd in onze geliefde Drupal social intranet distro OpenLucius :) hoe sneller hoe beter!

Bronnen:

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >