Drupal 8: BigPipe module ready

Published on 19 November, 2015

I’m happy to announce that Fabian Franz and I managed to get a first release of BigPipe published today, coinciding with the Drupal 8.0.0 release!

Rather than explaining what it does, see for yourself:

(That’s with 2 slow blocks that take 3 s to render. Only one is cacheable. Hence the page load takes ~6 s with cold caches, ~3 s with warm caches.)

Go download BigPipe 8.x-1.0-beta1![^1]

Fastest Drupal yet!

After Drupal 8 already shipping with both the Page Cache and Dynamic Page Cache enabled by default earlier, this is the third and final step in our quest to make the entire web fast.

  • Fast anonymous user page loads: Page Cache ā€” entire page is cached.
  • Fast authenticated user page loads: BigPipe ā€” majority of page including main content is cached (thanks to Dynamic Page Cache) and sent first, the rest is rendered later and streamed.

Go and enjoy the fastest Drupal yet![^2]

P.S.: none of this would have been possible without my employer Acquia, whom sponsored both my time and Fabian’s to make BigPipe a reality.

dddave

9 years 2 months ago

Congrats! Awesome work by everybody involved. Amazing progress Iike this is exactly what Drupal and the web need.

Jakob Torp

9 years 1 month ago

Amazing that you have managed to get this far within Drupal 8 release. Thanks for all your hard work in core and contrib making Drupal 8 as fast as it possibly can be. How does big pipe work with pages you want to cache in Varnish or another proxy, will this give any issues or does it just work?

How does big pipe work with pages you want to cache in Varnish or another proxy, will this give any issues or does it just work?

I’ve just added documentation to explain exactly that. Proxies can’t cause sites to become broken when using BigPipe, but they can break BigPipe by buffering a response, which causes the response to not actually stream, and hence once again function as the traditional model.

Thank you for your work Wim! Does ā€˜streamingā€™ mean that the more expensive content is actually sent to the client after the main html document has already been sent? I am asking this, because it does not matter what gets rendered in which order, if it is still sent in a single html document, correct?

Correct, the ā€œmore expensive contentā€ (the poorly cacheable or uncacheable content to be accurate) is actually sent to the client after the ā€œmain HTML documentā€ (the cacheable content to be accurate).

I am asking this, because it does not matter what gets rendered in which order, if it is still sent in a single html document, correct?
This is not correct. Please read the documentation: . And perhaps also read the Facebook ā€œEngineering Noteā€ where they present BigPipe: (also linked from the documentation).