SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
FE Performance: Beginner to Expert to Crazy 
Person 
Philip Tellis / ptellis@soasta.com 
IPC 2014 / 2014-10-28 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 1
Philip Tellis 
 @bluesmoon 
 ptellis@soasta.com 
 SOASTA 
 boomerang 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 2
Get the most benefit with the least effort 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 3
0 Beginning Web Performance 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 4
Start with a really slow site 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 5
0.1 Start Measuring 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 6
Or use RUM for real user data (boomerang/mPulse) 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 7
0.2 enable gzip 
http://slideshare.net/billwscott/improving-netflix-performance-experience 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 8
You can pre-gzip 
gzip_static in nginx 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 9
0.3 ImageOptim 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 10
0.4 Cache 
Cache-control: public, max-age=31415926 
http://www.mnot.net/cache_docs/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 11
Yes, that was 10 million pies 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 12
0 Congratulations 
You’ve just been promoted 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 13
1 What the Experts Do 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 14
1.1 CDN 
Serve your root domain through a CDN 
IPC 2014 / 2014-10-28 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 
IPC 2014 / 2014-10-28 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 
IPC 2014 / 2014-10-28 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 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 18
1.1 Don’t waste it 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 19
1.2 Split JavaScript 
critical: in the HEAD, 
enhancements: loaded async 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 20
1.3 Audit your CSS 
Chrome WebDev tools 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 21
Also checkout uncss for a command line option 
(also with a grunt version) 
IPC 2014 / 2014-10-28 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. 
IPC 2014 / 2014-10-28 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 
IPC 2014 / 2014-10-28 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/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 25
1.6 Increase initcwnd 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 26
1.6 Increase initcwnd 
@mobtec on Twitter 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 27
1.6b Also... 
net.ipv4.tcp_slow_start_after_idle=0 
http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 28
1.7 PageSpeed 
mod_pagespeed and ngx_pagespeed 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 29
Relax 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 30
2 You’ve reached crazyland 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 31
Sort in ascending order of signal latency 
 Electrons through copper 
 Light through fibre 
 Pulsars 
 Station Wagons 
 Smoke Signals 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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) 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 33
Study real user data 
Look for potential places to parallelise, predict or 
cache 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 34
Bandwidth is different around the world 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 35
As are people 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 36
2.1 Pre-load 
Pre-fetch assets required for the next page in a 
process flow 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 37
2.1b pre-render 
link rel=prerender href=url 
link rel=subresource href= 
link rel=dns-prefetch href= 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 39
2.2 Post-load 
Fetch optional assets after onload 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 41
2.4 Prepare for HTTP/2.0 
Multiple assets on the same connection and TLS by 
default. 
Breaks many of our rules. 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 42
2.5 Understand 3PoFs 
Use blackhole.webpagetest.org 
http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 44
Can you predict round-trip-time? 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 45
Can you predict round-trip-time? 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 47
Thank You! 
Questions? 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 48
Philip Tellis 
 @bluesmoon 
 philip@bluesmoon.info 
 www.SOASTA.com 
 boomerang 
 LogNormal Blog 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 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/ 
IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 50

Weitere ähnliche Inhalte

Was ist angesagt?

21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANciMike Friedman
 
CPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANCPANci: Continuous Integration for CPAN
CPANci: Continuous Integration for CPANMike Friedman
 
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
ZendCon 2015 - Laravel Forge: Hello World to Hello ProductionZendCon 2015 - Laravel Forge: Hello World to Hello Production
ZendCon 2015 - Laravel Forge: Hello World to Hello ProductionJoe Ferguson
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsJoe Ferguson
 
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.Aaron Schlesinger
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)Bram Adams
 
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 apisAlessandro Cinelli (cirpo)
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesAlexandre Gouaillard
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matterTomas Doran
 
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 2016Clark Everetts
 
Performance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPPerformance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPMax Romanovsky
 
Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Chris Tankersley
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusSimone Bordet
 
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 @ NYCAlexandre Gouaillard
 
Nodejs Performance Debug
Nodejs Performance DebugNodejs Performance Debug
Nodejs Performance DebugRafael Gonzaga
 

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
 
Web Leaps Forward
Web Leaps ForwardWeb Leaps Forward
Web Leaps Forward
 
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
 
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
ZendCon 2015 - Laravel Forge: Hello World to Hello ProductionZendCon 2015 - Laravel Forge: Hello World to Hello Production
ZendCon 2015 - Laravel Forge: Hello World to Hello Production
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
 
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.
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
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
 
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differencesWebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
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
 
Performance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHPPerformance tips for Symfony2 & PHP
Performance tips for Symfony2 & PHP
 
Transforming WebSockets
Transforming WebSocketsTransforming WebSockets
Transforming WebSockets
 
Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)Using PHP Functions! (Not those functions, Google Cloud Functions)
Using PHP Functions! (Not those functions, Google Cloud Functions)
 
HTTP/2 and Java: Current Status
HTTP/2 and Java: Current StatusHTTP/2 and Java: Current Status
HTTP/2 and Java: Current Status
 
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
 

Andere mochten auch

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?"Philip Tellis
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IPhilip Tellis
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxPhilip Tellis
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformancePhilip 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
 
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 HacksPhilip Tellis
 

Andere mochten auch (10)

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?"
 
RUM Distillation 101 -- Part I
RUM Distillation 101 -- Part IRUM Distillation 101 -- Part I
RUM Distillation 101 -- Part I
 
Frontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou FurieuxFrontend Performance: De débutant à Expert à Fou Furieux
Frontend Performance: De débutant à Expert à Fou Furieux
 
Service Summit M.-A. Delisle Part 2
Service Summit M.-A. Delisle Part 2Service Summit M.-A. Delisle Part 2
Service Summit M.-A. Delisle Part 2
 
Abusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web PerformanceAbusing JavaScript to Measure Web Performance
Abusing JavaScript to Measure Web Performance
 
being a geek
being a geekbeing a geek
being a geek
 
Service Summit M.-A. Delisle Part 1
Service Summit M.-A. Delisle Part 1Service Summit M.-A. Delisle Part 1
Service Summit M.-A. Delisle Part 1
 
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?
 
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
 
Distillation
DistillationDistillation
Distillation
 

Ähnlich wie 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 ...Philip Tellis
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspectiveshwetank
 
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
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersRaphaël PINSON
 
Technical report pinger
Technical report  pingerTechnical report  pinger
Technical report pingerRaheel Raza
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyMediafly
 
PySpark on Kubernetes @ Python Barcelona March Meetup
PySpark on Kubernetes @ Python Barcelona March MeetupPySpark on Kubernetes @ Python Barcelona March Meetup
PySpark on Kubernetes @ Python Barcelona March MeetupHolden Karau
 
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 CloudSalesforce Developers
 
Real time data processing with kafla spark integration
Real time data processing with kafla spark integrationReal time data processing with kafla spark integration
Real time data processing with kafla spark integrationTCS
 
Spark China Summit 2015 Guancheng Chen
Spark China Summit 2015 Guancheng ChenSpark China Summit 2015 Guancheng Chen
Spark China Summit 2015 Guancheng ChenGuancheng (G.C.) Chen
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017Alex Chistyakov
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Naotoshi Seo
 
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonApache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonDataWorks Summit
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk
 
Splunk Ninja: New Features, Pivot and Search Dojo
 Splunk Ninja: New Features, Pivot and Search Dojo Splunk Ninja: New Features, Pivot and Search Dojo
Splunk Ninja: New Features, Pivot and Search DojoSplunk
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk
 

Ähnlich wie Frontend Performance: Beginner to Expert to Crazy Person (20)

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 ...
 
WebRTC: A front-end perspective
WebRTC: A front-end perspectiveWebRTC: A front-end perspective
WebRTC: A front-end perspective
 
Network Security Best Practice (BCP38 & 140)
Network Security Best Practice (BCP38 & 140) Network Security Best Practice (BCP38 & 140)
Network Security Best Practice (BCP38 & 140)
 
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)
 
Cfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF SuperpowersCfgmgmtcamp 2023 — eBPF Superpowers
Cfgmgmtcamp 2023 — eBPF Superpowers
 
Technical report pinger
Technical report  pingerTechnical report  pinger
Technical report pinger
 
Chicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - MediaflyChicago Docker Meetup Presentation - Mediafly
Chicago Docker Meetup Presentation - Mediafly
 
PySpark on Kubernetes @ Python Barcelona March Meetup
PySpark on Kubernetes @ Python Barcelona March MeetupPySpark on Kubernetes @ Python Barcelona March Meetup
PySpark on Kubernetes @ Python Barcelona March Meetup
 
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
 
Real time data processing with kafla spark integration
Real time data processing with kafla spark integrationReal time data processing with kafla spark integration
Real time data processing with kafla spark integration
 
Spark China Summit 2015 Guancheng Chen
Spark China Summit 2015 Guancheng ChenSpark China Summit 2015 Guancheng Chen
Spark China Summit 2015 Guancheng Chen
 
Python performance engineering in 2017
Python performance engineering in 2017Python performance engineering in 2017
Python performance engineering in 2017
 
Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014Fluentd Hacking Guide at RubyKaigi 2014
Fluentd Hacking Guide at RubyKaigi 2014
 
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with PythonApache Spark 2.3 boosts advanced analytics and deep learning with Python
Apache Spark 2.3 boosts advanced analytics and deep learning with Python
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search Dojo
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search Dojo
 
Splunk Ninja: New Features, Pivot and Search Dojo
 Splunk Ninja: New Features, Pivot and Search Dojo Splunk Ninja: New Features, Pivot and Search Dojo
Splunk Ninja: New Features, Pivot and Search Dojo
 
Splunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search DojoSplunk Ninjas: New Features, Pivot and Search Dojo
Splunk Ninjas: New Features, Pivot and Search Dojo
 
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
 
Ipv6 tutorial
Ipv6 tutorialIpv6 tutorial
Ipv6 tutorial
 

Mehr von Philip Tellis

Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level MetricsPhilip 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 IFramesPhilip Tellis
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisPhilip Tellis
 
Analysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptAnalysing network characteristics with JavaScript
Analysing network characteristics with JavaScriptPhilip 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 TrafficPhilip Tellis
 
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 characteristicsPhilip Tellis
 
Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010Boomerang at FOSS.IN/2010
Boomerang at FOSS.IN/2010Philip 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 meetupPhilip Tellis
 
Boomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetupBoomerang @ NY Web Perf meetup
Boomerang @ NY Web Perf meetupPhilip Tellis
 
Measuring the web with boomerang
Measuring the web with boomerangMeasuring the web with boomerang
Measuring the web with boomerangPhilip Tellis
 
MySQL Business Continuity Planning
MySQL Business Continuity PlanningMySQL Business Continuity Planning
MySQL Business Continuity PlanningPhilip Tellis
 
Latency: Why you should worry, what you can do about it
Latency: Why you should worry, what you can do about itLatency: Why you should worry, what you can do about it
Latency: Why you should worry, what you can do about itPhilip Tellis
 
Scaling MySQL writes through Partitioning - IPC Spring Edition
Scaling MySQL writes through Partitioning - IPC Spring EditionScaling MySQL writes through Partitioning - IPC Spring Edition
Scaling MySQL writes through Partitioning - IPC Spring EditionPhilip Tellis
 
Station-wagons and electrons
Station-wagons and electronsStation-wagons and electrons
Station-wagons and electronsPhilip Tellis
 

Mehr von Philip Tellis (19)

Beyond Page Level Metrics
Beyond Page Level MetricsBeyond Page Level Metrics
Beyond Page Level Metrics
 
mmm... beacons
mmm... beaconsmmm... beacons
mmm... beacons
 
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
 
The Statistics of Web Performance Analysis
The Statistics of Web Performance AnalysisThe Statistics of Web Performance Analysis
The Statistics of Web Performance Analysis
 
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 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
 
MySQL Business Continuity Planning
MySQL Business Continuity PlanningMySQL Business Continuity Planning
MySQL Business Continuity Planning
 
Latency: Why you should worry, what you can do about it
Latency: Why you should worry, what you can do about itLatency: Why you should worry, what you can do about it
Latency: Why you should worry, what you can do about it
 
Scaling MySQL writes through Partitioning - IPC Spring Edition
Scaling MySQL writes through Partitioning - IPC Spring EditionScaling MySQL writes through Partitioning - IPC Spring Edition
Scaling MySQL writes through Partitioning - IPC Spring Edition
 
Station-wagons and electrons
Station-wagons and electronsStation-wagons and electrons
Station-wagons and electrons
 

Kürzlich hochgeladen

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 FresherRemote DBA Services
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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 Takeoffsammart93
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 

Kürzlich hochgeladen (20)

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
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 

Frontend Performance: Beginner to Expert to Crazy Person

  • 1. FE Performance: Beginner to Expert to Crazy Person Philip Tellis / ptellis@soasta.com IPC 2014 / 2014-10-28 IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 1
  • 2. Philip Tellis @bluesmoon ptellis@soasta.com SOASTA boomerang IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 2
  • 3. Get the most benefit with the least effort IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 3
  • 4. 0 Beginning Web Performance IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 4
  • 5. Start with a really slow site IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 5
  • 6. 0.1 Start Measuring IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 6
  • 7. Or use RUM for real user data (boomerang/mPulse) IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 7
  • 8. 0.2 enable gzip http://slideshare.net/billwscott/improving-netflix-performance-experience IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 8
  • 9. You can pre-gzip gzip_static in nginx IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 9
  • 10. 0.3 ImageOptim IPC 2014 / 2014-10-28 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/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 11
  • 12. Yes, that was 10 million pies IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 12
  • 13. 0 Congratulations You’ve just been promoted IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 13
  • 14. 1 What the Experts Do IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 14
  • 15. 1.1 CDN Serve your root domain through a CDN IPC 2014 / 2014-10-28 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 IPC 2014 / 2014-10-28 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 IPC 2014 / 2014-10-28 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 IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 18
  • 19. 1.1 Don’t waste it IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 19
  • 20. 1.2 Split JavaScript critical: in the HEAD, enhancements: loaded async IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 20
  • 21. 1.3 Audit your CSS Chrome WebDev tools IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 21
  • 22. Also checkout uncss for a command line option (also with a grunt version) IPC 2014 / 2014-10-28 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. IPC 2014 / 2014-10-28 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 IPC 2014 / 2014-10-28 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/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 25
  • 26. 1.6 Increase initcwnd IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 26
  • 27. 1.6 Increase initcwnd @mobtec on Twitter IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 27
  • 28. 1.6b Also... net.ipv4.tcp_slow_start_after_idle=0 http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 28
  • 29. 1.7 PageSpeed mod_pagespeed and ngx_pagespeed IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 29
  • 30. Relax IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 30
  • 31. 2 You’ve reached crazyland IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 31
  • 32. Sort in ascending order of signal latency Electrons through copper Light through fibre Pulsars Station Wagons Smoke Signals IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 32
  • 33. 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) IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 33
  • 34. Study real user data Look for potential places to parallelise, predict or cache IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 34
  • 35. Bandwidth is different around the world IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 35
  • 36. As are people IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 36
  • 37. 2.1 Pre-load Pre-fetch assets required for the next page in a process flow IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 37
  • 38. 2.1b pre-render link rel=prerender href=url link rel=subresource href= link rel=dns-prefetch href= IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 38
  • 39. 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 IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 39
  • 40. 2.2 Post-load Fetch optional assets after onload IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 40
  • 41. 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/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 41
  • 42. 2.4 Prepare for HTTP/2.0 Multiple assets on the same connection and TLS by default. Breaks many of our rules. IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 42
  • 43. 2.5 Understand 3PoFs Use blackhole.webpagetest.org http://blog.patrickmeenan.com/2011/10/testing-for-frontend-spof.html IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 43
  • 44. 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/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 44
  • 45. Can you predict round-trip-time? IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 45
  • 46. Can you predict round-trip-time? IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 46
  • 47. 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 IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 47
  • 48. Thank You! Questions? IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 48
  • 49. Philip Tellis @bluesmoon philip@bluesmoon.info www.SOASTA.com boomerang LogNormal Blog IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 49
  • 50. Image Credits Apple Pie http://www.flickr.com/photos/24609729@N00/3353226142/ Kittens in a PC http://www.flickr.com/photos/43525343@N08/6417971383/ IPC 2014 / 2014-10-28 FE Performance: Beginner to Expert to Crazy Person 50