Stream your way to Success: BigPipe, Refreshless, ESI, AJAX and more
Overview
This sessions shows the posibilities and pitfalls of a streaming based architecture like used by BigPipe and RefreshLess and how if streaming is built into the system from day 1, there are lots of possibilities for gradual performance optimization.
Intro
I (Fabianx) still remember the day when I loaded the mozilla bug tracker in 1999 and it immediately had a 'Loading ...' message and later the real content appeared. That was so Wow!
I also remember the "shock" I experieneced when I loaded Facebook with their BigPipe disabled and it took 3.4 seconds (!). But but .. it was always so fast.
And the reason is both of those had used 'felt user experience' and not raw numbers to create their systems. I immediate could see and interact with those systems.
So while streaming is almost as old as the internet (it came in HTTP/1.1), CMS traditionally did not make much use of it, but rather used several AJAX requests for composing pages. This has the disadvantage that for each ajax request a new connection needs to be created and especially for Drupal the bootstrap is a big bottleneck.
And now with HTTP/2 the whole direction of HTTP changes to use streamed responses for everything and therefore technologies like BigPipe will be even more useful as they can start pushing assets as soon as we know that we need them.
What you will learn
- Making your stack ready for streaming
- How to avoid the pitfalls of streaming based architectures (e.g. no JavaScript support, assets, aggregation)
- How you can easily create your own streamed fragments in Drupal 8 with BigPipe included
- How you can create your own streamed responses easily
- How you could implement a manual BigPipe approach for Drupal 7
- How streaming works in combination with Javascript
- How streaming can be combined with "worker farms" (outlook)