View Issue Details

IDProjectCategoryView StatusLast Update
0003555Composrcorepublic2019-06-27 15:40
ReporterChris GrahamAssigned To 
SeverityFeature-request 
Status non-assignedResolutionopen 
Product Version 
Fixed in Version 
Summary0003555: New block 'defer' mode based on Facebook's BigPipe
DescriptionSee: https://www.facebook.com/notes/facebook-engineering/bigpipe-pipelining-web-pages-for-high-performance/389414033919

A new kind of 'defer' mode for blocks, similar to the current one but a bit more sophisticated

Rather than AJAX execution, the block is computed later in the same page request

A symbol in GLOBAL_HTML_WRAP.tpl, just before </body> would inject the late blocks

The block HTML would be copied to the correct DOM position using JavaScript

Block HTML generation would be done in parallel; using pcntl_fork, and short-lived persistent caching to buffer the data back to the main process

Combine with output streaming option for best performance

Allows the browser to pre-load all the JS and CSS references (that the smart cache has already injected), and even render most of the page, but doesn't require the less-efficient AJAX loading
Additional InformationDrupal has implemented BigPipe.
TagsType: Performance
Time estimation (hours)24
Sponsorship open0

Activities

Chris Graham

2019-06-27 15:40

administrator   ~0005996

It might be that HTTP preloading can remove the need for this - by putting out preload headers for the deferred AJAX requests, meaning the HTTP/2 server will automatically push the results of those requests.
I'm not sure if something would need changing regarding HTTP caching for those requests - i.e. will a non-cachable request done early be valid for the current page render.

Issue History

Date Modified Username Field Change
2018-03-08 04:51 Chris Graham New Issue
2018-03-08 04:51 Chris Graham Tag Attached: Type: Performance
2019-06-27 15:40 Chris Graham Note Added: 0005996