SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
FE Performance: Beginner to Expert to Crazy 
Person 
Philip Tellis / ptellis@soasta.com 
Paris-Web 2014 / 2014-10-17 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 1
Philip Tellis 
 @bluesmoon 
 ptellis@soasta.com 
 SOASTA 
 boomerang 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 2
Get the most benefit with the least effort 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 3
0 Beginning Web Performance 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 4
Start with a really slow site 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 5
0.1 Start Measuring 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 6
Or use RUM for real user data (boomerang/mPulse) 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 7
0.2 enable gzip 
http://slideshare.net/billwscott/improving-netflix-performance-experience 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 8
You can pre-gzip 
gzip_static in nginx 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 9
0.3 ImageOptim 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 10
0.4 Cache 
Cache-control: public, max-age=31415926 
http://www.mnot.net/cache_docs/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 11
Yes, that was 10 million pies 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 12
0 Congratulations 
You’ve just been promoted 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 13
1 What the Experts Do 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 14
1.1 CDN 
Serve your root domain through a CDN 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 15
1.1 CDN 
And make sure your CSS is on the same domain 
http://www.jonathanklein.net/2014/02/revisiting-cookieless-domain.html 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 16
1.1 CDN 
Google Chrome will open two TCP connections to 
the primary host, one for the page, and the second 
just in case 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 17
1.1 Google Chrome will open two TCP connections to the 
primary host, one for the page, and the second just in case 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 18
1.1 Don’t waste it 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 19
1.2 Split JavaScript 
critical: in the HEAD, 
enhancements: loaded async 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 20
1.3 Audit your CSS 
Chrome WebDev tools 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 21
Also checkout uncss for a command line option 
(also with a grunt version) 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 22
1.4 Parallelise downloads/use sprites 
You can have higher bandwidth, you cannot have lower latency. 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 23
1.5 Flush Early and Often 
Get bytes to the client ASAP to avoid TCP Slow 
Start, and speed up CSS 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 24
1.6 Increase initcwnd 
Initial Congestion Window: Number of packets to 
send before waiting for an ACK 
http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 25
1.6 Increase initcwnd 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 26
1.6b Also... 
net.ipv4.tcp_slow_start_after_idle=0 
http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 27
1.7 PageSpeed 
mod_pagespeed and ngx_pagespeed 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 28
Relax 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 29
2 You’ve reached crazyland 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 30
Sort in ascending order of signal latency 
 Electrons through copper 
 Light through fibre 
 Pulsars 
 Station Wagons 
 Smoke Signals 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 31
Sort in ascending order of signal latency 
1 Pulsars (light through vacuum) 
2 Smoke Signals (light through air) 
3 Electrons through copper / Light through fibre 
4 Station Wagons (possibly highest bandwidth) 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 32
Study real user data 
Look for potential places to parallelise, predict or 
cache 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 33
Bandwidth is different around the world 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 34
As are people 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 35
2.1 Pre-load 
Pre-fetch assets required for the next page in a 
process flow 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 36
2.1b pre-render 
link rel=prerender href=url 
link rel=subresource href= 
link rel=dns-prefetch href= 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 37
2.1c onVisibilityChange 
And while you’re at it, don’t do expensive work if the 
page is hidden 
https://developer.mozilla.org/en-US/docs/Web/Guide/ 
User_experience/Using_the_Page_Visibility_API 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 38
2.2 Post-load 
Fetch optional assets after onload 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 39
2.3 Detect broken accept-encoding 
Many Windows anti-viruses and firewalls disable 
gzip by munging the Accept-Encoding header 
http://www.lognormal.com/blog/2012/08/17/accept-encoding-stats/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 40
2.4 Prepare for HTTP/2.0 
Multiple assets on the same connection and TLS by 
default. 
Breaks many of our rules. 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 41
2.5 Understand 3PoFs 
Use blackhole.webpagetest.org 
http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 42
2.6 Understand the IFrame Loader Technique 
Take required but non-critical assets out of the 
critical path 
http://www.lognormal.com/blog/2012/12/12/the-script-loader-pattern/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 43
Can you predict round-trip-time? 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 44
Can you predict round-trip-time? 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 45
References 
 WebPageTest – http://webpagetest.org 
 Boomerang – http://lognormal.github.io/boomerang/doc/ 
 SOASTA mPulse – http://www.soasta.com/free 
 Netflix gzip study – http://www.slideshare.net/billwscott/improving-netflix-performance-experience 
 Nginx gzip_static – http://wiki.nginx.org/HttpGzipStaticModule 
 ImageOptim – http://imageoptim.com/ 
 uncss – https://github.com/giakki/uncss 
 grunt-uncss – https://github.com/addyosmani/grunt-uncss 
 Caching – http://www.mnot.net/cache_docs/ 
 Same domain CSS – http://www.jonathanklein.net/2014/02/revisiting-cookieless-domain.html 
 initcwnd – http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ 
 Linux TCP Tuning – http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ 
 Prerender – https://developers.google.com/chrome/whitepapers/prerender 
 DNS prefetching – https://developer.mozilla.org/en-US/docs/Controlling_DNS_prefetching 
 Subresource – http://www.chromium.org/spdy/link-headers-and-server-hint/link-rel-subresource 
 FE SPoF – http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html 
 Page Visibility API – 
https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 46
Thank You! 
Questions? 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 47
Philip Tellis 
 @bluesmoon 
 philip@bluesmoon.info 
 www.SOASTA.com 
 boomerang 
 LogNormal Blog 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 48
Image Credits 
 Apple Pie 
http://www.flickr.com/photos/24609729@N00/3353226142/ 
 Kittens in a PC 
http://www.flickr.com/photos/43525343@N08/6417971383/ 
Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 49

Weitere ähnliche Inhalte

Was ist angesagt?

Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Alexandre Gouaillard
 

Was ist angesagt? (20)

21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 
CPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANCPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPAN
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Perl in Teh Cloud
Perl in Teh CloudPerl in Teh Cloud
Perl in Teh Cloud
 
Go - Where it's going and why you should pay attention.
Go - Where it's going and why you should pay attention.Go - Where it's going and why you should pay attention.
Go - Where it's going and why you should pay attention.
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
 
Don't screw it up: how to build durable web apis
Don't screw it up: how to build durable web apisDon't screw it up: how to build durable web apis
Don't screw it up: how to build durable web apis
 
Red5 Open Source Flash Server
Red5 Open Source Flash ServerRed5 Open Source Flash Server
Red5 Open Source Flash Server
 
Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
Transforming WebSockets
Transforming WebSocketsTransforming WebSockets
Transforming WebSockets
 
Performance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPPerformance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHP
 
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYCPractical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
Practical webRTC - from API to Solution - webRTC Summit 2014 @ NYC
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance Debug
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
 
Composer - Package Management for PHP. Silver Bullet?
Composer - Package Management for PHP. Silver Bullet?Composer - Package Management for PHP. Silver Bullet?
Composer - Package Management for PHP. Silver Bullet?
 
Indexing BackPAN
Indexing BackPANIndexing BackPAN
Indexing BackPAN
 
2021laravelconftwslides6
2021laravelconftwslides62021laravelconftwslides6
2021laravelconftwslides6
 
Zend con 2016 bdd with behat for beginners
Zend con 2016   bdd with behat for beginnersZend con 2016   bdd with behat for beginners
Zend con 2016 bdd with behat for beginners
 
Seven perilous pitfalls to avoid with Java | DevNation Tech Talk
Seven perilous pitfalls to avoid with Java | DevNation Tech TalkSeven perilous pitfalls to avoid with Java | DevNation Tech Talk
Seven perilous pitfalls to avoid with Java | DevNation Tech Talk
 

Ähnlich wie Frontend Performance: De débutant à Expert à Fou Furieux

Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Alessandro Nadalin
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Alexandre Gouaillard
 

Ähnlich wie Frontend Performance: De débutant à Expert à Fou Furieux (20)

Frontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy PersonFrontend Performance: Beginner to Expert to Crazy Person
Frontend Performance: Beginner to Expert to Crazy Person
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
 
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc  2015 HTTP 1, HTTP 2 and folksDevoxx Maroc  2015 HTTP 1, HTTP 2 and folks
Devoxx Maroc 2015 HTTP 1, HTTP 2 and folks
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
 
An API Your Parents Would Be Proud Of
An API Your Parents Would Be Proud OfAn API Your Parents Would Be Proud Of
An API Your Parents Would Be Proud Of
 
Makefiles in 2020 — Why they still matter
Makefiles in 2020 — Why they still matterMakefiles in 2020 — Why they still matter
Makefiles in 2020 — Why they still matter
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspective
 
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
Don't screw it up: how to build durable web apis @ PHPDay 2014 in Verona (ITA)
 
Converting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - CascadiaConverting Your Dev Environment to a Docker Stack - Cascadia
Converting Your Dev Environment to a Docker Stack - Cascadia
 
Learn how to build decentralized and serverless html5 applications with Embar...
Learn how to build decentralized and serverless html5 applications with Embar...Learn how to build decentralized and serverless html5 applications with Embar...
Learn how to build decentralized and serverless html5 applications with Embar...
 
Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...Learn how to build decentralized and serverless html5 applications with embar...
Learn how to build decentralized and serverless html5 applications with embar...
 
Network Security Best Practice (BCP38 & 140)
Network Security Best Practice (BCP38 & 140) Network Security Best Practice (BCP38 & 140)
Network Security Best Practice (BCP38 & 140)
 
Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]Converting Your Dev Environment to a Docker Stack - php[world]
Converting Your Dev Environment to a Docker Stack - php[world]
 
From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017
 
Don't screw it up! How to build durable API
Don't screw it up! How to build durable API Don't screw it up! How to build durable API
Don't screw it up! How to build durable API
 
Deep dive into Verdaccio - NodeTLV 2022 - Israel
Deep dive into Verdaccio - NodeTLV 2022 - IsraelDeep dive into Verdaccio - NodeTLV 2022 - Israel
Deep dive into Verdaccio - NodeTLV 2022 - Israel
 
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San FranciscoHTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
HTTP colon slash slash: end of the road? @ CakeFest 2013 in San Francisco
 
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlantaPlugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
Plugin for other browsers - webRTC Conference and Expo June 2014 @ atlanta
 
About Flink streaming
About Flink streamingAbout Flink streaming
About Flink streaming
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
 

Mehr von Philip Tellis

Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
Philip Tellis
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScript
Philip Tellis
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
Philip Tellis
 
Boomerang: How fast do users think your site is?
Boomerang: How fast do users think your site is?Boomerang: How fast do users think your site is?
Boomerang: How fast do users think your site is?
Philip Tellis
 
Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010
Philip Tellis
 
Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)
Philip Tellis
 
Boomerang at the Boston Web Performance meetup
Boomerang at the Boston Web Performance meetupBoomerang at the Boston Web Performance meetup
Boomerang at the Boston Web Performance meetup
Philip Tellis
 
Boomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetupBoomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetup
Philip Tellis
 

Mehr von Philip Tellis (20)

Improving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other HacksImproving D3 Performance with CANVAS and other Hacks
Improving D3 Performance with CANVAS and other Hacks
 
Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
 
mmm... beacons
mmm... beaconsmmm... beacons
mmm... beacons
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part I
 
Improving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFramesImproving 3rd Party Script Performance With IFrames
Improving 3rd Party Script Performance With IFrames
 
Extending Boomerang
Extending BoomerangExtending Boomerang
Extending Boomerang
 
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
Abusing JavaScript to measure Web Performance, or, "how does boomerang work?"
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance Analysis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web Performance
 
Rum for Breakfast
Rum for BreakfastRum for Breakfast
Rum for Breakfast
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScript
 
A Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web TrafficA Node.JS bag of goodies for analyzing Web Traffic
A Node.JS bag of goodies for analyzing Web Traffic
 
Input sanitization
Input sanitizationInput sanitization
Input sanitization
 
Messing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristicsMessing with JavaScript and the DOM to measure network characteristics
Messing with JavaScript and the DOM to measure network characteristics
 
Boomerang: How fast do users think your site is?
Boomerang: How fast do users think your site is?Boomerang: How fast do users think your site is?
Boomerang: How fast do users think your site is?
 
Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010
 
Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)Measuring the web with Boomerang (YUIConf 2010)
Measuring the web with Boomerang (YUIConf 2010)
 
Boomerang at the Boston Web Performance meetup
Boomerang at the Boston Web Performance meetupBoomerang at the Boston Web Performance meetup
Boomerang at the Boston Web Performance meetup
 
Boomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetupBoomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetup
 
Measuring the web with boomerang
Measuring the web with boomerangMeasuring the web with boomerang
Measuring the web with boomerang
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Frontend Performance: De débutant à Expert à Fou Furieux

  • 1. FE Performance: Beginner to Expert to Crazy Person Philip Tellis / ptellis@soasta.com Paris-Web 2014 / 2014-10-17 Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 1
  • 2. Philip Tellis @bluesmoon ptellis@soasta.com SOASTA boomerang Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 2
  • 3. Get the most benefit with the least effort Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 3
  • 4. 0 Beginning Web Performance Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 4
  • 5. Start with a really slow site Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 5
  • 6. 0.1 Start Measuring Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 6
  • 7. Or use RUM for real user data (boomerang/mPulse) Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 7
  • 8. 0.2 enable gzip http://slideshare.net/billwscott/improving-netflix-performance-experience Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 8
  • 9. You can pre-gzip gzip_static in nginx Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 9
  • 10. 0.3 ImageOptim Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 10
  • 11. 0.4 Cache Cache-control: public, max-age=31415926 http://www.mnot.net/cache_docs/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 11
  • 12. Yes, that was 10 million pies Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 12
  • 13. 0 Congratulations You’ve just been promoted Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 13
  • 14. 1 What the Experts Do Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 14
  • 15. 1.1 CDN Serve your root domain through a CDN Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 15
  • 16. 1.1 CDN And make sure your CSS is on the same domain http://www.jonathanklein.net/2014/02/revisiting-cookieless-domain.html Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 16
  • 17. 1.1 CDN Google Chrome will open two TCP connections to the primary host, one for the page, and the second just in case Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 17
  • 18. 1.1 Google Chrome will open two TCP connections to the primary host, one for the page, and the second just in case Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 18
  • 19. 1.1 Don’t waste it Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 19
  • 20. 1.2 Split JavaScript critical: in the HEAD, enhancements: loaded async Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 20
  • 21. 1.3 Audit your CSS Chrome WebDev tools Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 21
  • 22. Also checkout uncss for a command line option (also with a grunt version) Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 22
  • 23. 1.4 Parallelise downloads/use sprites You can have higher bandwidth, you cannot have lower latency. Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 23
  • 24. 1.5 Flush Early and Often Get bytes to the client ASAP to avoid TCP Slow Start, and speed up CSS Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 24
  • 25. 1.6 Increase initcwnd Initial Congestion Window: Number of packets to send before waiting for an ACK http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 25
  • 26. 1.6 Increase initcwnd Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 26
  • 27. 1.6b Also... net.ipv4.tcp_slow_start_after_idle=0 http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 27
  • 28. 1.7 PageSpeed mod_pagespeed and ngx_pagespeed Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 28
  • 29. Relax Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 29
  • 30. 2 You’ve reached crazyland Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 30
  • 31. Sort in ascending order of signal latency Electrons through copper Light through fibre Pulsars Station Wagons Smoke Signals Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 31
  • 32. Sort in ascending order of signal latency 1 Pulsars (light through vacuum) 2 Smoke Signals (light through air) 3 Electrons through copper / Light through fibre 4 Station Wagons (possibly highest bandwidth) Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 32
  • 33. Study real user data Look for potential places to parallelise, predict or cache Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 33
  • 34. Bandwidth is different around the world Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 34
  • 35. As are people Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 35
  • 36. 2.1 Pre-load Pre-fetch assets required for the next page in a process flow Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 36
  • 37. 2.1b pre-render link rel=prerender href=url link rel=subresource href= link rel=dns-prefetch href= Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 37
  • 38. 2.1c onVisibilityChange And while you’re at it, don’t do expensive work if the page is hidden https://developer.mozilla.org/en-US/docs/Web/Guide/ User_experience/Using_the_Page_Visibility_API Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 38
  • 39. 2.2 Post-load Fetch optional assets after onload Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 39
  • 40. 2.3 Detect broken accept-encoding Many Windows anti-viruses and firewalls disable gzip by munging the Accept-Encoding header http://www.lognormal.com/blog/2012/08/17/accept-encoding-stats/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 40
  • 41. 2.4 Prepare for HTTP/2.0 Multiple assets on the same connection and TLS by default. Breaks many of our rules. Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 41
  • 42. 2.5 Understand 3PoFs Use blackhole.webpagetest.org http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 42
  • 43. 2.6 Understand the IFrame Loader Technique Take required but non-critical assets out of the critical path http://www.lognormal.com/blog/2012/12/12/the-script-loader-pattern/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 43
  • 44. Can you predict round-trip-time? Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 44
  • 45. Can you predict round-trip-time? Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 45
  • 46. References WebPageTest – http://webpagetest.org Boomerang – http://lognormal.github.io/boomerang/doc/ SOASTA mPulse – http://www.soasta.com/free Netflix gzip study – http://www.slideshare.net/billwscott/improving-netflix-performance-experience Nginx gzip_static – http://wiki.nginx.org/HttpGzipStaticModule ImageOptim – http://imageoptim.com/ uncss – https://github.com/giakki/uncss grunt-uncss – https://github.com/addyosmani/grunt-uncss Caching – http://www.mnot.net/cache_docs/ Same domain CSS – http://www.jonathanklein.net/2014/02/revisiting-cookieless-domain.html initcwnd – http://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ Linux TCP Tuning – http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ Prerender – https://developers.google.com/chrome/whitepapers/prerender DNS prefetching – https://developer.mozilla.org/en-US/docs/Controlling_DNS_prefetching Subresource – http://www.chromium.org/spdy/link-headers-and-server-hint/link-rel-subresource FE SPoF – http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html Page Visibility API – https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 46
  • 47. Thank You! Questions? Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 47
  • 48. Philip Tellis @bluesmoon philip@bluesmoon.info www.SOASTA.com boomerang LogNormal Blog Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 48
  • 49. Image Credits Apple Pie http://www.flickr.com/photos/24609729@N00/3353226142/ Kittens in a PC http://www.flickr.com/photos/43525343@N08/6417971383/ Paris-Web 2014 / 2014-10-17 FE Performance: Beginner to Expert to Crazy Person 49