SlideShare a Scribd company logo
BigPipe: What have I learned
Radim Klaška, Developer @ Morpht.com & Drupal.cz
Intro
Wim Leers
&
Fabian Franz
Thank you!
D7 way
● Intro
D7 page handling
● Whole page is send as one chunk.
● Takes a long time to load everything.
● Limited options of DOM ordering vs. what’
s displayed
General info
● Intro
● D7 way
BigPipe: general idea
● One quick response with main part of the
page.
● Other small requests to fill in the gaps.
General info
● Intro
● D7 way
It's all about
performance
● Backend
○ server response time
● Frontend
○ often the slowest part
○ rendering DOM
○ loading assets (CSS, JS)
Performance
● Intro
● D7 way
● General info
Performance
vs.
Perceived performance
● How long does it take to generate the
page?
● How long does it take see your content?
Performance
● Intro
● D7 way
● General info
Measurements
● Time to First Byte
"Oh, that server responds quickly!" - Who
cares?
Performance Measurements
● Time to First Byte
"Oh, that server responds quickly!" - Who
cares?
● Time to Assets Prefetching
Load CSS linked at the beginning of the
DOM while still loading the rest of the
DOM.
● Intro
● D7 way
● General info
Performance Measurements
● Time to First Byte
"Oh, that server responds quickly!" - Who
cares?
● Time to Assets Prefetching
Load CSS linked at the beginning of the
DOM while still loading the rest of the
DOM.
● Time to interact
Not only clicking around, reading the
article is interaction too!
● Intro
● D7 way
● General info
Performance Measurements
● Time to First Byte
"Oh, that server responds quickly!" - Who
cares?
● Time to Assets Prefetching
Load CSS linked at the beginning of the
DOM while still loading the rest of the
DOM.
● Time to interact
Not only clicking around, reading the
article is interaction too!
● Page load time
Total load time, avoid extremes
● Intro
● D7 way
● General info
Performance
Usual optimizations
still matter
● Minification
● Aggreggation
● Fewer HTTP requests
● Intro
● D7 way
● General info
Performance
Whole chain has to be fast!
Performance
BigPipe is on the
intersection of backend and
frontend.
● Intro
● D7 way
● General info
How it works General idea
● Send most basic and cacheable info first
● Load the rest of the content later in
smaller pieces
● Intro
● D7 way
● General info
● Performance
It takes the same time
(Page Load Time) in the
end, but perceived
performance is much
better!
How it works
● Intro
● D7 way
● General info
● Performance
That's the general idea.
But how it works?
How it works
● Intro
● D7 way
● General info
● Performance
Good old Page cache
● Generate the page
How it works
● Intro
● D7 way
● General info
● Performance
Good old Page cache
● Generate the page
● Save the result in DB
How it works
● Intro
● D7 way
● General info
● Performance
Good old Page cache
● Generate the page
● Save the result in DB
● Lots of variations
How it works
● Intro
● D7 way
● General info
● Performance
D8 toolsHow it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
How it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
○ actually used everywhere in core
How it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
○ actually used everywhere in core
● Dynamic page cache
How it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
○ actually used everywhere in core
● Dynamic page cache
○ for authenticated users!
How it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
○ actually used everywhere in core
● Dynamic page cache
○ for authenticated users!
○ handles caching of parts of the page
How it works
● Intro
● D7 way
● General info
● Performance
D8 tools
● Cache metadata
○ actually used everywhere in core
● Dynamic page cache
○ for authenticated users!
○ handles caching of parts of the page
○ overhead - actually makes page
generation time
How it works
● Intro
● D7 way
● General info
● Performance
Cache metadata
● Cache tags
● Cache context
● Cache max-age
How it works
● Intro
● D7 way
● General info
● Performance
Cache tags
● data dependencies
How it works
● Intro
● D7 way
● General info
● Performance
Cache tags
● data dependencies
● editing content will automatically
invalidate proper caches
How it works
● Intro
● D7 way
● General info
● Performance
Cache context
● Rememeber block definitions? "Cache by
user / role..."
How it works
● Intro
● D7 way
● General info
● Performance
Cache context
● Rememeber block definitions? "Cache by
user / role..."
● this alters cachability of the whole page
(not only your block)
How it works
● Intro
● D7 way
● General info
● Performance
Cache context
● Rememeber block definitions? "Cache by
user / role..."
● this alters cachability of the whole page
(not only your block)
● you can define your own cache contexts
How it works
● Intro
● D7 way
● General info
● Performance
Cache max-age
● invalidation by time
How it works
● Intro
● D7 way
● General info
● Performance
Cache max-age
● invalidation by time
● default is permanent
How it works
● Intro
● D7 way
● General info
● Performance
Render APIHow it works
● Intro
● D7 way
● General info
● Performance
Render API
● lazy builders
How it works
● Intro
● D7 way
● General info
● Performance
Render API
● lazy builders
○ based on trivial variables (no objects)
How it works
● Intro
● D7 way
● General info
● Performance
Render API
● lazy builders
○ based on trivial variables (no objects)
● pieces of content can be generated in
isolation
How it works
● Intro
● D7 way
● General info
● Performance
Render API
● lazy builders
○ based on trivial variables (no objects)
● pieces of content can be generated in
isolation
● drupal_add_js() / drupal_add_css()
How it works
● Intro
● D7 way
● General info
● Performance
Render API
● lazy builders
○ based on trivial variables (no objects)
● pieces of content can be generated in
isolation
● drupal_add_js() / drupal_add_css()
● #attached
How it works
● Intro
● D7 way
● General info
● Performance
Example: Shopping cart
● varies by session
Example
● Intro
● D7 way
● General info
● Performance
Example: Shopping cart
● varies by session
● module provides cache metadata
Example
● Intro
● D7 way
● General info
● Performance
● How it works
Example: Shopping cart
● varies by session
● module provides cache metadata
● drupal figures out
○ which parts of the page can be
cached at what level
Example
● Intro
● D7 way
● General info
● Performance
● How it works
Example: Shopping cart
● varies by session
● module provides cache metadata
● drupal figures out
○ which parts of the page can be
cached at what level
○ automatically creates placeholders
for expansive content
Example
● Intro
● D7 way
● General info
● Performance
● How it works
Example: Shopping cart
● varies by session
● module provides cache metadata
● drupal figures out
○ which parts of the page can be
cached at what level
○ automatically creates placeholders
for expansive content
○ caches the base page and it’s parts
separately
○ replaces placeholders
Example
● Intro
● D7 way
● General info
● Performance
● How it works
Example: Shopping cart
Result is one cached page that can be served
to all users and variations of other context
specific pieces in dynamic page cache. These
will be used in placeholders on main page.
Example
● Intro
● D7 way
● General info
● Performance
● How it works
Do you want it?
● Complicated configuration…
● NO!
● Just enable the module ;-)
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Any contradictions?
● Page can jump a little while loading.
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Any contradictions?
● Page can jump a little while loading.
Surprise! Your 3G users see the same even
without BigPipe. Fix your CSS.
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
It's still experimental…
Test it!
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Requirements
● No special config, just proper metadata
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Requirements
● No special config, just proper metadata
● Ability to stream responses - no buffering
(Apache / Nginx)
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Requirements
● No special config, just proper metadata
● Ability to stream responses - no buffering
(Apache / Nginx)
● JS for BigPipe to work at it's best,
degrades gracefully by switching streams
Use it
● Intro
● D7 way
● General info
● Performance
● How it works
● The mighty GIF
● Example
Demo
Q&A
@radimklaska / radim@klaska.net

More Related Content

What's hot

Andrew Berezovsky - Drupal 8 How to Migr8
Andrew Berezovsky - Drupal 8 How to Migr8Andrew Berezovsky - Drupal 8 How to Migr8
Andrew Berezovsky - Drupal 8 How to Migr8
DrupalSib
 
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
DrupalCamp Kyiv
 
Multiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for PublishersMultiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for Publishers
Jon Peck
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
Ioan Eugen Stan
 
JS performance tools
JS performance toolsJS performance tools
JS performance tools
Dmytro Ovcharenko
 
Patterns: The new Javascript framweork
Patterns: The new Javascript framweorkPatterns: The new Javascript framweork
Patterns: The new Javascript framweork
Franco Pellegrini
 
2018 September - The Month in PHP
2018 September - The Month in PHP2018 September - The Month in PHP
2018 September - The Month in PHP
Eric Poe
 
NE Scala 2016 roundup
NE Scala 2016 roundupNE Scala 2016 roundup
NE Scala 2016 roundup
Hung Lin
 
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
César Hernández
 
Gradle presentation
Gradle presentationGradle presentation
Gradle presentation
Oriol Jiménez
 
Drupal + composer = new love !?
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
nuppla
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
Nathanial McConnell
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
Kostas Saidis
 
Gradle : An introduction
Gradle : An introduction Gradle : An introduction
Gradle : An introduction
Nibodha Technologies
 
Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018
Eric Poe
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
barciszewski
 
Best Practices in Component Development for MODX
Best Practices in Component Development for MODXBest Practices in Component Development for MODX
Best Practices in Component Development for MODX
Jan Tezner
 
Drupal core indeas - Andy Postnikov
Drupal core indeas  - Andy PostnikovDrupal core indeas  - Andy Postnikov
Drupal core indeas - Andy Postnikov
DrupalCamp Kyiv
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
Mario García
 

What's hot (20)

Andrew Berezovsky - Drupal 8 How to Migr8
Andrew Berezovsky - Drupal 8 How to Migr8Andrew Berezovsky - Drupal 8 How to Migr8
Andrew Berezovsky - Drupal 8 How to Migr8
 
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
 
Multiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for PublishersMultiplier Effect: Case Studies in Distributions for Publishers
Multiplier Effect: Case Studies in Distributions for Publishers
 
Gradle build automation tool
Gradle   build automation toolGradle   build automation tool
Gradle build automation tool
 
JS performance tools
JS performance toolsJS performance tools
JS performance tools
 
Patterns: The new Javascript framweork
Patterns: The new Javascript framweorkPatterns: The new Javascript framweork
Patterns: The new Javascript framweork
 
2018 September - The Month in PHP
2018 September - The Month in PHP2018 September - The Month in PHP
2018 September - The Month in PHP
 
NE Scala 2016 roundup
NE Scala 2016 roundupNE Scala 2016 roundup
NE Scala 2016 roundup
 
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
 
Gradle presentation
Gradle presentationGradle presentation
Gradle presentation
 
Drupal + composer = new love !?
Drupal + composer = new love !?Drupal + composer = new love !?
Drupal + composer = new love !?
 
SELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the StorySELF - Becoming a Rails Developer - The Rest of the Story
SELF - Becoming a Rails Developer - The Rest of the Story
 
An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
 
Gradle : An introduction
Gradle : An introduction Gradle : An introduction
Gradle : An introduction
 
Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018Last 2 Months in PHP - January 2018
Last 2 Months in PHP - January 2018
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Best Practices in Component Development for MODX
Best Practices in Component Development for MODXBest Practices in Component Development for MODX
Best Practices in Component Development for MODX
 
Drupal core indeas - Andy Postnikov
Drupal core indeas  - Andy PostnikovDrupal core indeas  - Andy Postnikov
Drupal core indeas - Andy Postnikov
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)Jbake workshop (Greach 2019)
Jbake workshop (Greach 2019)
 

Viewers also liked

Tipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testováníTipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testování
Radim Klaška
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?
Radim Klaška
 
Intro to Drupal (or idea of having an CMS in generall)
Intro to Drupal (or idea of having an CMS in generall)Intro to Drupal (or idea of having an CMS in generall)
Intro to Drupal (or idea of having an CMS in generall)
Radim Klaška
 
Migrace v Drupalu 8
Migrace v Drupalu 8Migrace v Drupalu 8
Migrace v Drupalu 8
Radim Klaška
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
Helge Tennø
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
Barry Feldman
 

Viewers also liked (6)

Tipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testováníTipy a triky, best practices, deployment, testování
Tipy a triky, best practices, deployment, testování
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?
 
Intro to Drupal (or idea of having an CMS in generall)
Intro to Drupal (or idea of having an CMS in generall)Intro to Drupal (or idea of having an CMS in generall)
Intro to Drupal (or idea of having an CMS in generall)
 
Migrace v Drupalu 8
Migrace v Drupalu 8Migrace v Drupalu 8
Migrace v Drupalu 8
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 
The Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post FormatsThe Six Highest Performing B2B Blog Post Formats
The Six Highest Performing B2B Blog Post Formats
 

Similar to Drupal BigPipe: What have I learned

Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)
rc2209
 
Understanding Page Load / Ziling Zhao (Google)
Understanding Page Load / Ziling Zhao (Google)Understanding Page Load / Ziling Zhao (Google)
Understanding Page Load / Ziling Zhao (Google)
Ontico
 
How to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websitesHow to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websites
Pratik Jagdishwala
 
Website Speed :: Fox Valley Computing Professionals, September 2014
Website Speed :: Fox Valley Computing Professionals, September 2014Website Speed :: Fox Valley Computing Professionals, September 2014
Website Speed :: Fox Valley Computing Professionals, September 2014
Straight North
 
Tech meetup: Web Applications Performance
Tech meetup: Web Applications PerformanceTech meetup: Web Applications Performance
Tech meetup: Web Applications Performance
Santex Group
 
From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)
From nothing to a video under 2 seconds / Mikhail Sychev  (YouTube)From nothing to a video under 2 seconds / Mikhail Sychev  (YouTube)
From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)
Ontico
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
Igalia
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
Krivoy Rog IT Community
 
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
ResellerClub
 
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 FinalCaching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
M Asif Rahman
 
PyGrunn2013 High Performance Web Applications with TurboGears
PyGrunn2013  High Performance Web Applications with TurboGearsPyGrunn2013  High Performance Web Applications with TurboGears
PyGrunn2013 High Performance Web Applications with TurboGears
Alessandro Molina
 
Harnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platforHarnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platfor
Luke Summerfield
 
Drupal 7 performance and optimization
Drupal 7 performance and optimizationDrupal 7 performance and optimization
Drupal 7 performance and optimization
Shafqat Hussain
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web framework
Alive Kuo
 
Introduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form techIntroduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form tech
Gengo
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvements
Gengo
 
What cloud changes the developer
What cloud changes the developerWhat cloud changes the developer
What cloud changes the developer
Simon Su
 
Word press optimizations
Word press optimizations Word press optimizations
Word press optimizations
Shawn DeWolfe
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
Women in Technology Poland
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
Lewiz
 

Similar to Drupal BigPipe: What have I learned (20)

Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)Tools and libraries for common problems (Early Draft)
Tools and libraries for common problems (Early Draft)
 
Understanding Page Load / Ziling Zhao (Google)
Understanding Page Load / Ziling Zhao (Google)Understanding Page Load / Ziling Zhao (Google)
Understanding Page Load / Ziling Zhao (Google)
 
How to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websitesHow to Boost the performance of your Wordpress powered websites
How to Boost the performance of your Wordpress powered websites
 
Website Speed :: Fox Valley Computing Professionals, September 2014
Website Speed :: Fox Valley Computing Professionals, September 2014Website Speed :: Fox Valley Computing Professionals, September 2014
Website Speed :: Fox Valley Computing Professionals, September 2014
 
Tech meetup: Web Applications Performance
Tech meetup: Web Applications PerformanceTech meetup: Web Applications Performance
Tech meetup: Web Applications Performance
 
From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)
From nothing to a video under 2 seconds / Mikhail Sychev  (YouTube)From nothing to a video under 2 seconds / Mikhail Sychev  (YouTube)
From nothing to a video under 2 seconds / Mikhail Sychev (YouTube)
 
You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)You Can Work on the Web Patform! (GOSIM 2023)
You Can Work on the Web Patform! (GOSIM 2023)
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
Ctrl+F5 Ahmedabad, 2017 - BOOST THE PERFORMANCE OF WORDPRESS WEBSITES by Prat...
 
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 FinalCaching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
Caching and Optimization By M Asif Rahman @ WordCamp Orlando 2012 Final
 
PyGrunn2013 High Performance Web Applications with TurboGears
PyGrunn2013  High Performance Web Applications with TurboGearsPyGrunn2013  High Performance Web Applications with TurboGears
PyGrunn2013 High Performance Web Applications with TurboGears
 
Harnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platforHarnessing the cloud_for_saa_s_hosted_platfor
Harnessing the cloud_for_saa_s_hosted_platfor
 
Drupal 7 performance and optimization
Drupal 7 performance and optimizationDrupal 7 performance and optimization
Drupal 7 performance and optimization
 
JavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web frameworkJavascriptMVC: Another choice of web framework
JavascriptMVC: Another choice of web framework
 
Introduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form techIntroduction to Gengo's New Order Form tech
Introduction to Gengo's New Order Form tech
 
About order form improvements
About order form improvementsAbout order form improvements
About order form improvements
 
What cloud changes the developer
What cloud changes the developerWhat cloud changes the developer
What cloud changes the developer
 
Word press optimizations
Word press optimizations Word press optimizations
Word press optimizations
 
Architektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan KrausArchitektura html, css i javascript - Jan Kraus
Architektura html, css i javascript - Jan Kraus
 
Making sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developersMaking sense of the front-end, for PHP developers
Making sense of the front-end, for PHP developers
 

Recently uploaded

办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
uehowe
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
Tarandeep Singh
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
uehowe
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 

Recently uploaded (16)

办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
Bengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal BrandingBengaluru Dreamin' 24 - Personal Branding
Bengaluru Dreamin' 24 - Personal Branding
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 

Drupal BigPipe: What have I learned

  • 1. BigPipe: What have I learned Radim Klaška, Developer @ Morpht.com & Drupal.cz
  • 3. D7 way ● Intro D7 page handling ● Whole page is send as one chunk. ● Takes a long time to load everything. ● Limited options of DOM ordering vs. what’ s displayed
  • 4. General info ● Intro ● D7 way BigPipe: general idea ● One quick response with main part of the page. ● Other small requests to fill in the gaps.
  • 5. General info ● Intro ● D7 way It's all about performance ● Backend ○ server response time ● Frontend ○ often the slowest part ○ rendering DOM ○ loading assets (CSS, JS)
  • 6. Performance ● Intro ● D7 way ● General info Performance vs. Perceived performance ● How long does it take to generate the page? ● How long does it take see your content?
  • 7. Performance ● Intro ● D7 way ● General info Measurements ● Time to First Byte "Oh, that server responds quickly!" - Who cares?
  • 8. Performance Measurements ● Time to First Byte "Oh, that server responds quickly!" - Who cares? ● Time to Assets Prefetching Load CSS linked at the beginning of the DOM while still loading the rest of the DOM. ● Intro ● D7 way ● General info
  • 9. Performance Measurements ● Time to First Byte "Oh, that server responds quickly!" - Who cares? ● Time to Assets Prefetching Load CSS linked at the beginning of the DOM while still loading the rest of the DOM. ● Time to interact Not only clicking around, reading the article is interaction too! ● Intro ● D7 way ● General info
  • 10. Performance Measurements ● Time to First Byte "Oh, that server responds quickly!" - Who cares? ● Time to Assets Prefetching Load CSS linked at the beginning of the DOM while still loading the rest of the DOM. ● Time to interact Not only clicking around, reading the article is interaction too! ● Page load time Total load time, avoid extremes ● Intro ● D7 way ● General info
  • 11. Performance Usual optimizations still matter ● Minification ● Aggreggation ● Fewer HTTP requests ● Intro ● D7 way ● General info
  • 13. Performance BigPipe is on the intersection of backend and frontend. ● Intro ● D7 way ● General info
  • 14. How it works General idea ● Send most basic and cacheable info first ● Load the rest of the content later in smaller pieces ● Intro ● D7 way ● General info ● Performance
  • 15. It takes the same time (Page Load Time) in the end, but perceived performance is much better! How it works ● Intro ● D7 way ● General info ● Performance
  • 16. That's the general idea. But how it works? How it works ● Intro ● D7 way ● General info ● Performance
  • 17. Good old Page cache ● Generate the page How it works ● Intro ● D7 way ● General info ● Performance
  • 18. Good old Page cache ● Generate the page ● Save the result in DB How it works ● Intro ● D7 way ● General info ● Performance
  • 19. Good old Page cache ● Generate the page ● Save the result in DB ● Lots of variations How it works ● Intro ● D7 way ● General info ● Performance
  • 20. D8 toolsHow it works ● Intro ● D7 way ● General info ● Performance
  • 21. D8 tools ● Cache metadata How it works ● Intro ● D7 way ● General info ● Performance
  • 22. D8 tools ● Cache metadata ○ actually used everywhere in core How it works ● Intro ● D7 way ● General info ● Performance
  • 23. D8 tools ● Cache metadata ○ actually used everywhere in core ● Dynamic page cache How it works ● Intro ● D7 way ● General info ● Performance
  • 24. D8 tools ● Cache metadata ○ actually used everywhere in core ● Dynamic page cache ○ for authenticated users! How it works ● Intro ● D7 way ● General info ● Performance
  • 25. D8 tools ● Cache metadata ○ actually used everywhere in core ● Dynamic page cache ○ for authenticated users! ○ handles caching of parts of the page How it works ● Intro ● D7 way ● General info ● Performance
  • 26. D8 tools ● Cache metadata ○ actually used everywhere in core ● Dynamic page cache ○ for authenticated users! ○ handles caching of parts of the page ○ overhead - actually makes page generation time How it works ● Intro ● D7 way ● General info ● Performance
  • 27. Cache metadata ● Cache tags ● Cache context ● Cache max-age How it works ● Intro ● D7 way ● General info ● Performance
  • 28. Cache tags ● data dependencies How it works ● Intro ● D7 way ● General info ● Performance
  • 29. Cache tags ● data dependencies ● editing content will automatically invalidate proper caches How it works ● Intro ● D7 way ● General info ● Performance
  • 30. Cache context ● Rememeber block definitions? "Cache by user / role..." How it works ● Intro ● D7 way ● General info ● Performance
  • 31. Cache context ● Rememeber block definitions? "Cache by user / role..." ● this alters cachability of the whole page (not only your block) How it works ● Intro ● D7 way ● General info ● Performance
  • 32. Cache context ● Rememeber block definitions? "Cache by user / role..." ● this alters cachability of the whole page (not only your block) ● you can define your own cache contexts How it works ● Intro ● D7 way ● General info ● Performance
  • 33. Cache max-age ● invalidation by time How it works ● Intro ● D7 way ● General info ● Performance
  • 34. Cache max-age ● invalidation by time ● default is permanent How it works ● Intro ● D7 way ● General info ● Performance
  • 35. Render APIHow it works ● Intro ● D7 way ● General info ● Performance
  • 36. Render API ● lazy builders How it works ● Intro ● D7 way ● General info ● Performance
  • 37. Render API ● lazy builders ○ based on trivial variables (no objects) How it works ● Intro ● D7 way ● General info ● Performance
  • 38. Render API ● lazy builders ○ based on trivial variables (no objects) ● pieces of content can be generated in isolation How it works ● Intro ● D7 way ● General info ● Performance
  • 39. Render API ● lazy builders ○ based on trivial variables (no objects) ● pieces of content can be generated in isolation ● drupal_add_js() / drupal_add_css() How it works ● Intro ● D7 way ● General info ● Performance
  • 40. Render API ● lazy builders ○ based on trivial variables (no objects) ● pieces of content can be generated in isolation ● drupal_add_js() / drupal_add_css() ● #attached How it works ● Intro ● D7 way ● General info ● Performance
  • 41. Example: Shopping cart ● varies by session Example ● Intro ● D7 way ● General info ● Performance
  • 42. Example: Shopping cart ● varies by session ● module provides cache metadata Example ● Intro ● D7 way ● General info ● Performance ● How it works
  • 43. Example: Shopping cart ● varies by session ● module provides cache metadata ● drupal figures out ○ which parts of the page can be cached at what level Example ● Intro ● D7 way ● General info ● Performance ● How it works
  • 44. Example: Shopping cart ● varies by session ● module provides cache metadata ● drupal figures out ○ which parts of the page can be cached at what level ○ automatically creates placeholders for expansive content Example ● Intro ● D7 way ● General info ● Performance ● How it works
  • 45. Example: Shopping cart ● varies by session ● module provides cache metadata ● drupal figures out ○ which parts of the page can be cached at what level ○ automatically creates placeholders for expansive content ○ caches the base page and it’s parts separately ○ replaces placeholders Example ● Intro ● D7 way ● General info ● Performance ● How it works
  • 46. Example: Shopping cart Result is one cached page that can be served to all users and variations of other context specific pieces in dynamic page cache. These will be used in placeholders on main page. Example ● Intro ● D7 way ● General info ● Performance ● How it works
  • 47.
  • 48. Do you want it? ● Complicated configuration… ● NO! ● Just enable the module ;-) Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 49. Any contradictions? ● Page can jump a little while loading. Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 50. Any contradictions? ● Page can jump a little while loading. Surprise! Your 3G users see the same even without BigPipe. Fix your CSS. Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 51. It's still experimental… Test it! Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 52. Requirements ● No special config, just proper metadata Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 53. Requirements ● No special config, just proper metadata ● Ability to stream responses - no buffering (Apache / Nginx) Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 54. Requirements ● No special config, just proper metadata ● Ability to stream responses - no buffering (Apache / Nginx) ● JS for BigPipe to work at it's best, degrades gracefully by switching streams Use it ● Intro ● D7 way ● General info ● Performance ● How it works ● The mighty GIF ● Example
  • 55. Demo