Slide 1

Slide 1 text

Performance Optimisation Fabio Cicerchia

Slide 2

Slide 2 text

Who am I?

Slide 3

Slide 3 text

Fabio Cicerchia 3 Senior Full-Stack Developer @fabiocicerchia Working for: Performance Optimisation - Fabio Cicerchia

Slide 4

Slide 4 text

Let’s talk about...

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

6 Performance is a process not a project Every engineer should think about performance Performance Optimisation - Fabio Cicerchia

Slide 7

Slide 7 text

Time is Money Unfortunately you can’t buy it, so don’t waste it 7 Performance Optimisation - Fabio Cicerchia

Slide 8

Slide 8 text

Performance matters 8 Performance Optimisation - Fabio Cicerchia

Slide 9

Slide 9 text

Measuring 9

Slide 10

Slide 10 text

How? 1. Accurately measure page performance 2. Be unobtrusive 3. Have a good sampling 4. Focus on useful metrics 10 Performance Optimisation - Fabio Cicerchia

Slide 11

Slide 11 text

Random Sampling How to randomise? ● Pick 10% of users at random and always test them ● For each user, decide at random if they should be tested 11 Performance Optimisation - Fabio Cicerchia http://tech.bluesmoon.info/2010/01/statistics-of-performance-measurement.html http://xkcd.com/221/

Slide 12

Slide 12 text

Central Tendency Mean(10, 11, 12, 11, 109) = 30 Affected by outliers Median(10, 11, 12, 11, 109) = 11 Central tendency Mode(10, 11, 12, 11, 109) = 11 Most recurring value, not often used 12 Performance Optimisation - Fabio Cicerchia

Slide 13

Slide 13 text

Percentiles ● Percentiles are perfect for automatic baselining. ● Averages can be misleading. Keep an eye on: ● 50th percentile = Median ● 95th percentile ● 98th percentile ● 99th percentile 13 Performance Optimisation - Fabio Cicerchia http://apmblog.dynatrace.com/2012/11/14/why-averages-suck-and-percentiles-are-great/

Slide 14

Slide 14 text

You can't improve what you can’t measure — Osho 14 Performance Optimisation - Fabio Cicerchia

Slide 15

Slide 15 text

Metrics

Slide 16

Slide 16 text

16 Performance Optimisation - Fabio Cicerchia

Slide 17

Slide 17 text

TTFB The Time To First Byte metric is affected by 3 components: ● The time the request takes to reach the web server ● The time the web server takes to process the request and generate the response ● The time the response takes to go back to your browser 17 Performance Optimisation - Fabio Cicerchia https://moz.com/blog/improving-search-rank-by-optimizing-your-time-to-first-byte

Slide 18

Slide 18 text

TTLB As per TTFB the reasons for a high Time To Last Byte could be: ● Geographic latency (server is far away from visitor) ● Poorly written server-side code ● Outdated server hardware ● Overloaded servers (clogged bandwidth due to high traffic – from humans, bots, or both) ● Poorly organized databases ● Poorly written database code 18 Performance Optimisation - Fabio Cicerchia

Slide 19

Slide 19 text

DOM Content Loaded It’s fired when the HTML document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading. A very different event load should be used only to detect a fully-loaded page. It is an incredibly popular mistake to use load where DOMContentLoaded would be much more appropriate, so be cautious. 19 Performance Optimisation - Fabio Cicerchia https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

Slide 20

Slide 20 text

Full Load document.addEventListener('DOMContentLoaded', function (event) { console.log('DOM fully loaded and parsed'); }); function load() { console.log('load event detected!'); } window.onload = load; $(document).ready(function () { console.log('ready'); }); $(window).load(function () { console.log('loaded'); }); 20 OUTPUT 1. ready 2. DOM fully loaded and parsed 3. load event detected! 4. loaded 1 2 3 4 Performance Optimisation - Fabio Cicerchia

Slide 21

Slide 21 text

Speed Index The Speed Index is the average time at which visible parts of the page are displayed. It is expressed in milliseconds and dependent on size of the view port. The Speed Index metric measures how quickly the page contents are visually populated (where lower numbers are better). 21 Performance Optimisation - Fabio Cicerchia https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index

Slide 22

Slide 22 text

Some Figures

Slide 23

Slide 23 text

3rd Party? 3rd party calls can make up >50% of page requests. They are the single greatest potential point of failure for web pages. 23 Performance Optimisation - Fabio Cicerchia http://www.webperformancetoday.com/2011/07/14/fourth-party-calls-third-party-content/

Slide 24

Slide 24 text

GZip? ● GZIP compression saves 50% to 80% bandwidth and it will significantly increase the website’s loading speed. ● Netflix saw a 43% drop in outbound traffic after enabling compression 24 Performance Optimisation - Fabio Cicerchia https://www.keycdn.com/blog/website-performance-optimization/ https://cdnify.com/blog/15-web-performance-stats/

Slide 25

Slide 25 text

Images? On average, 64% of a website’s page weight is made up of images. – HTTP Archive 25 Performance Optimisation - Fabio Cicerchia http://httparchive.org/interesting.php

Slide 26

Slide 26 text

Redirect? 20% pages contains 5 or more redirects. And 3% of pages contained 10 or more. 26 Performance Optimisation - Fabio Cicerchia https://www.soasta.com/blog/23-stats-mobile-web-performance-monitoring/

Slide 27

Slide 27 text

27 C’mon it’s just a small delay... YEAH, SURE! Performance Optimisation - Fabio Cicerchia

Slide 28

Slide 28 text

100ms slower? 1% drop in sales (Amazon) 28 Performance Optimisation - Fabio Cicerchia http://www.carbon60.com/blog/milliseconds-are-money-how-much-performance-matters-in-the-cloud

Slide 29

Slide 29 text

500ms slower? 25% drop in searches (Google) 29 Performance Optimisation - Fabio Cicerchia https://cdnify.com/blog/15-web-performance-stats/

Slide 30

Slide 30 text

1 second slower? 11% fewer page views, a 16% decrease in customer satisfaction, and 7% loss in conversions 30 Performance Optimisation - Fabio Cicerchia http://www.aberdeen.com/Aberdeen-Library/5136/RA-performance-web-application.aspx

Slide 31

Slide 31 text

2 seconds slower? During a transaction results in abandonment rates of up to 87%. This is significantly higher than the average abandonment rate of 70%. 31 Performance Optimisation - Fabio Cicerchia https://blog.radware.com/applicationdelivery/applicationaccelerationoptimization/2014/01/55-web-performance-stats-youll-want-to-know/

Slide 32

Slide 32 text

3 seconds slower? 53% of visits to mobile sites are abandoned after 3 seconds – Google's DoubleClick. 32 Performance Optimisation - Fabio Cicerchia https://wpostats.com/

Slide 33

Slide 33 text

4 seconds? Only 2% of the top 100 ecommerce sites loads in fewer than 4 seconds on smartphones. 33 Performance Optimisation - Fabio Cicerchia https://blog.radware.com/applicationdelivery/applicationaccelerationoptimization/2014/01/55-web-performance-stats-youll-want-to-know/

Slide 34

Slide 34 text

10 seconds? ● 1 out of 4 pages took more than 10 seconds to load. ● 20% of the top 100 ecommerce sites loads in more than 10 seconds. 34 Performance Optimisation - Fabio Cicerchia https://blog.radware.com/applicationdelivery/applicationaccelerationoptimization/2014/01/55-web-performance-stats-youll-want-to-know/

Slide 35

Slide 35 text

To infinity... and beyond! ● According to Google's DoubleClick, when comparing sites that load in 5 seconds to sites that load in 19 seconds, the faster sites had 70% longer average session lengths, 35% lower bounce rates and 25% higher ad viewability than their slower counterparts. ● Google's DoubleClick found that publishers whose mobile sites load in 5 seconds earn up to 2x more mobile ad revenue than sites loading in 19 seconds. 35 Performance Optimisation - Fabio Cicerchia https://wpostats.com/

Slide 36

Slide 36 text

Poor Performances = Web Stress Brain wave analysis from the experiment revealed that participants had to concentrate up to 50% more when using badly performing websites, while facial muscle and behavioural analysis of the subjects also revealed greater agitation and stress in these periods. 36 Performance Optimisation - Fabio Cicerchia http://www.ca.com/Files/SupportingPieces/final_webstress_survey_report_229296.pdf

Slide 37

Slide 37 text

Long story short...

Slide 38

Slide 38 text

You are LOSING Visitors You are LOSING Sales You are LOSING Ad-revenue You are WASTING SEO/SEM/PPC budget SPENDING $$$ on bandwidth and servers 38 Performance Optimisation - Fabio Cicerchia

Slide 39

Slide 39 text

So, how to do it?

Slide 40

Slide 40 text

40 Performance Optimisation - Fabio Cicerchia too many irons in the fire

Slide 41

Slide 41 text

41 WPO (Web Performance Optimisation) Optimise the poorly performing networks and servers Performance Optimisation - Fabio Cicerchia https://devcentral.f5.com/articles/wils-wpo-versus-feo

Slide 42

Slide 42 text

42 Performance Optimisation - Fabio Cicerchia FEO (Front-End Optimisation) Change the content to decrease the amount of traffic https://devcentral.f5.com/articles/wils-wpo-versus-feo

Slide 43

Slide 43 text

43 Performance Optimisation - Fabio Cicerchia WCO (Web Content Optimisation) Make the page rendering faster http://www.webperformancetoday.com/2011/06/10/wpo-wco-feo-web-performance-optimization/

Slide 44

Slide 44 text

44 Performance Optimisation - Fabio Cicerchia DSA (Dynamic Site Acceleration) Bring network resources closer to the user by prefetching or caching files https://en.wikipedia.org/wiki/Dynamic_site_acceleration

Slide 45

Slide 45 text

45 Performance Optimisation - Fabio Cicerchia

Slide 46

Slide 46 text

Let’s do it!

Slide 47

Slide 47 text

Level 0 Noob 47

Slide 48

Slide 48 text

GZip ● You send zipped content over the wire, the browser unpacks it ● Modern browsers understand compressed content ● Search engine spiders do too 48 Performance Optimisation - Fabio Cicerchia

Slide 49

Slide 49 text

Minify ● Minify JavaScript and CSS ● Inline styles and scripts should also be minified ● The Source Maps are loaded only in Dev Mode 49 Performance Optimisation - Fabio Cicerchia https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

Slide 50

Slide 50 text

Avoid 404s ● Useless requests ● When an external JavaScript is a 404, the browser will still try to parse it and find something usable in it ● They’ll slow down the UX 50 Performance Optimisation - Fabio Cicerchia

Slide 51

Slide 51 text

Optimise Images ● Lossless optimisation ● Correct dimensions ● Save for web ● Use the right file format: GIF for animations, JPEG for photograph, otherwise PNG ● Don’t Scale Images in HTML 51 Performance Optimisation - Fabio Cicerchia http://www.creativebloq.com/netmag/10-ways-optimise-images-better-performance-71515792

Slide 52

Slide 52 text

● Choose horizontal over vertical when possible ● Combine similar colors ● Keep color count low ● Don’t leave big gaps Optimise CSS Sprites 52 Performance Optimisation - Fabio Cicerchia

Slide 53

Slide 53 text

Yahoo’s Rules ● Minimize HTTP Requests ● Use a Content Delivery Network ● Add an Expires or a Cache-Control Header ● Gzip Components ● Put StyleSheets at the Top ● Put Scripts at the Bottom ● Avoid CSS Expressions ● Make JavaScript and CSS External ● Reduce DNS Lookups ● Minify JavaScript and CSS ● Avoid Redirects ● Remove Duplicate Scripts ● Configure ETags ● Make AJAX Cacheable ● Use GET for AJAX Requests ● Reduce the Number of DOM Elements ● No 404s ● Reduce Cookie Size ● Use Cookie-Free Domains for Components ● Avoid Filters ● Do Not Scale Images in HTML ● Make favicon.ico Small & Cacheable Google’s Rules ● Avoid bad requests ● Avoid CSS expressions ● Combine external CSS ● Combine external JavaScript ● Defer loading of JavaScript ● Enable compression ● Leverage browser caching ● Leverage proxy caching ● Minify CSS ● Minify HTML ● Minify JavaScript ● Minimize request size ● Minimize DNS lookups ● Minimize redirects ● Optimize images ● Optimize the order of styles and scripts ● Parallelize downloads across hostnames ● Put CSS in the document head ● Remove unused CSS ● Serve resources from a consistent URL ● Serve scaled images ● Serve static content from a cookieless domain ● Specify a character set early ● Specify image dimensions ● Use efficient CSS selectors Back to basics 53 Performance Optimisation - Fabio Cicerchia http://code.google.com/speed/page-speed/docs/rules_intro.html http://developer.yahoo.com/yslow/help/#guidelines

Slide 54

Slide 54 text

Level 1 Getting Serious 54

Slide 55

Slide 55 text

Favicon.ico ● The browser will request it ● Better not respond with a 404 ● Cookies are sent ● Cannot be on CDN ● Interferes with the download sequence ● Make it small (<= 1K) ● Animated favicons are not cool ● Set Expires header 55 Performance Optimisation - Fabio Cicerchia

Slide 56

Slide 56 text

Minimise iframes Pros: ● Can help with slow third-party content like badges and ads ● Security sandbox ● You can download scripts in parallel Cons: ● They have a cost even if blank ● They block page onload ● Non-semantic 56 Performance Optimisation - Fabio Cicerchia

Slide 57

Slide 57 text

What's absolutely required in order to render the page initially? The rest can wait (drag and drop, animations, hidden content, images below the fold) Post-load Components 57 Performance Optimisation - Fabio Cicerchia

Slide 58

Slide 58 text

● Items you'll need in the future ● Unconditional preload (google.com loads a sprite onload) ● Conditional preload (search.yahoo.com after you type in the input box) ● Anticipated preload – preload in advance before launching a redesign ● When you start typing the page can safely assume you’ll hit the search results page Preload Components 58 Performance Optimisation - Fabio Cicerchia

Slide 59

Slide 59 text

Option 1: Separate subdomain (static.example.org) Option 2: A new domain (e.g. yimg.com, ytimg.com, images-amazon.com) Use Cookie-Free Domains 59 Performance Optimisation - Fabio Cicerchia

Slide 60

Slide 60 text

ETags ● ETag is a token that can be associated with a web resource ● ETags are meant to help with caching ○ They take precedence for caching ○ They never expire ● Issues with load balanced environment ○ A component served from server A has a different ETag than the same component served from B ● Most of the time you don’t need them 60 Performance Optimisation - Fabio Cicerchia https://techpunch.co.uk/development/should-your-site-be-using-etags-or-not https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching

Slide 61

Slide 61 text

Reduce Cookies ● Eliminate unnecessary cookies ● Keep cookie sizes as low as possible to minimize the impact on the user response time ● Be mindful of setting cookies at the appropriate domain level so other sub-domains are not affected ● Set an Expires date appropriately. An earlier Expires date or none removes the cookie sooner, improving the user response time 61 Performance Optimisation - Fabio Cicerchia

Slide 62

Slide 62 text

● Don't wait for onload, use DOMContentLoaded ● Events bubble up, so use delegation (attach listeners to outer elements) ● Clean up to prevent IE memory leaks ● Careful with onresize Event Handlers 62 Performance Optimisation - Fabio Cicerchia

Slide 63

Slide 63 text

● CSS should be at the top ● @import blocks parallel downloads ● In IE @import is the same as putting at the bottom ● allows alternate styles (e.g. for accessibility) Choose over @import 63 Performance Optimisation - Fabio Cicerchia http://www.stevesouders.com/blog/2009/04/09/dont-use-import/ http://alistapart.com/article/alternate

Slide 64

Slide 64 text

Level 2 Advanced 64

Slide 65

Slide 65 text

Reduce DOM Elements World's fastest page? about:blank! A complex page means more bytes to download, it also means slower DOM access in JavaScript Easy to test, just type in Firebug’s console: document.getElementsByTagName('*').length 65 Performance Optimisation - Fabio Cicerchia

Slide 66

Slide 66 text

Prefetching ● DNS prefetching → resolve the DNS ● Preconnect → resolve the DNS + TCP handshake + TLS negotiation (optional) ● Prefetch → requesting, downloading and storing the asset in the cache ● Prerender → load all of the assets of a certain document 66 Performance Optimisation - Fabio Cicerchia https://css-tricks.com/prefetching-preloading-prebrowsing/

Slide 67

Slide 67 text

ATF The most important and interesting section should be at the top of the webpage Make sure to render the Above The Fold content in < 1s Defer the non-AFT contents 67 Performance Optimisation - Fabio Cicerchia http://whereisthefold.com/

Slide 68

Slide 68 text

Requests Sharding ​Domain sharding is a technique for splitting resources across multiple domains, improving page load time. When multiple domains are used, browsers are able to download more resources simultaneously, resulting in a faster user experience. Note: ​HTTP/2 has officially replaced SPDY and made it obsolete. 68 Performance Optimisation - Fabio Cicerchia https://www.maxcdn.com/one/visual-glossary/domain-sharding-2/ https://www.stevesouders.com/blog/2013/09/05/domain-sharding-revisited/

Slide 69

Slide 69 text

VanillaJS 69 Performance Optimisation - Fabio Cicerchia http://vanilla-js.com/

Slide 70

Slide 70 text

● Blocks rendering, freezes the browser ● Increased memory consumption ● Per element, not per image Avoid Filters 70 Performance Optimisation - Fabio Cicerchia

Slide 71

Slide 71 text

Web Fonts ● Blocks text rendering ● Fonts are bigger than 14Kb ● Use them with care ● Remove characters 71 Performance Optimisation - Fabio Cicerchia

Slide 72

Slide 72 text

WebP WebP is a modern image format that provides superior lossless and lossy compression for images on the web. WebP lossless images are 26% smaller than PNGs and 25-34% smaller than JPEG images. 72 Performance Optimisation - Fabio Cicerchia https://developers.google.com/speed/webp/docs/webp_lossless_alpha_study https://developers.google.com/speed/webp/

Slide 73

Slide 73 text

Animations ● Don’t animate from JavaScript for basic stuff ● Use requestAnimationFrame ● Have a look at GSAP (20x faster than jQuery) and VelocityJS 73 Performance Optimisation - Fabio Cicerchia https://developers.google.com/web/fundamentals/design-and-ui/animations/animations-and-performance https://developer.mozilla.org/en-US/Apps/Fundamentals/Performance/CSS_JavaScript_animation_performance https://greensock.com/js/speed.html http://velocityjs.org

Slide 74

Slide 74 text

HTML5 Features ● Application Cache Service Workers ● Web Storage ● Web Workers ● Navigation Timing API ● Web Sockets 74 Performance Optimisation - Fabio Cicerchia www.mobilehtml5.org https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache

Slide 75

Slide 75 text

CRP Optimizing the Critical Rendering Path refers to prioritising the display of content that relates to the current user action. Perceived Performance is a measure of how quick a user thinks your site is 75 Performance Optimisation - Fabio Cicerchia https://developers.google.com/web/fundamentals/performance/critical-rendering-path/ https://www.smashingmagazine.com/2015/08/understanding-critical-css/ http://blog.teamtreehouse.com/perceived-performance

Slide 76

Slide 76 text

Level 3 Behind the Scenes

Slide 77

Slide 77 text

Latency Latency is the amount of time it takes to transmit a single piece of data from one location to another 1. Decrease External HTTP Requests 2. DNS Prefetching 3. Preconnect 4. Use a CDN 5. HTTP/2 6. Caching 77 Performance Optimisation - Fabio Cicerchia https://www.keycdn.com/blog/latency-optimization/

Slide 78

Slide 78 text

CDN Get a Content Delivery Network: ● Akamai ● CDNify (from $10/m) ● CloudFlare (free-mium) ● MaxCDN (from $9/m) 78 Performance Optimisation - Fabio Cicerchia http://www.cdnplanet.com/cdns/ http://www.cdncalc.com/

Slide 79

Slide 79 text

CDN (cont’d) 79 Performance Optimisation - Fabio Cicerchia

Slide 80

Slide 80 text

What is dynamic content? Almost everything is static for a time. The hard part is to reduce the miss rate. What can you cache? ● DB Results ● Functions Output ● Generated HTML Cache 80 Performance Optimisation - Fabio Cicerchia https://www.digitalocean.com/community/tutorials/web-caching-basics-terminology-http-headers-and-caching-strategies https://www.mnot.net/cache_docs/

Slide 81

Slide 81 text

Cache (cont’d) There are only two hard things in Computer Science: cache invalidation and naming things — Phil Karlton 81 Performance Optimisation - Fabio Cicerchia

Slide 82

Slide 82 text

SPDY SPDY is now deprecated ● Allows concurrent HTTP requests in one TCP session. ● Reduces the bandwidth used by HTTP (header compression & cleaning useless headers). ● Makes SSL the underlying transport protocol, for better security and compatibility with existing network infrastructure. 82 Performance Optimisation - Fabio Cicerchia https://www.chromium.org/spdy/spdy-whitepaper

Slide 83

Slide 83 text

HTTP/2 ● Origins from SPDY by Google ● HTTP/2 is protocol designed for ○ Low latency transport of content over the Web ● No change to HTTP semantics ○ It’s about how data travels through the wire ● Key new features in HTTP/2 ○ Multiplexing: multiple streams over a single connection ○ Header compression: reuse headers from previous requests ○ Server push: multiple parallel responses for a single request ○ Prioritisation: some resources have priorities 83 Performance Optimisation - Fabio Cicerchia http://www.slideshare.net/nakov/http2-for-developers

Slide 84

Slide 84 text

HTTP/2 (cont’d) 84 HTTP/1 workarounds hurt HTTP/2 perf. Anti-patterns ● Domain Sharding ● Images Sprites ● Resource In-Lining ● Merging CSS & JS Performance Optimisation - Fabio Cicerchia https://daniel.haxx.se/http2/ http://caniuse.com/#feat=http2 http://www.itbusinessedge.com/slideshows/best-practices-of-http1.1-becoming-bad-practices-for-http2.html

Slide 85

Slide 85 text

SSL ● HTTPS requires an initial handshake despite it’s size (~5KB) it can be very slow. ● Making lots of short requests over HTTPS will be quite a bit slower than HTTP, but if you transfer a lot of data in a single request, the difference will be insignificant. ● Solution: Improve the Handshake + Keep-Alive. 85 Performance Optimisation - Fabio Cicerchia https://www.maxcdn.com/blog/ssl-performance-myth/ https://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/ http://blog.haproxy.com/2011/09/16/benchmarking_ssl_performance/

Slide 86

Slide 86 text

Level 4 Backend Superstar

Slide 87

Slide 87 text

XHProf 87 Performance Optimisation - Fabio Cicerchia

Slide 88

Slide 88 text

SF Profiler 88 Performance Optimisation - Fabio Cicerchia

Slide 89

Slide 89 text

Level 5 Mobile Ninja

Slide 90

Slide 90 text

Summary ● Slow Network → Reduce Reqs + Reduce Bytes ● Weak CPU = Slow JS → Async + Defer ● Focus on ATF ● Different Connection Model → Reduce domain sharding, Reduce 304s ● Cache → localStorage 90 Performance Optimisation - Fabio Cicerchia http://browserbench.org/JetStream/ http://queue.acm.org/detail.cfm?id=2510122

Slide 91

Slide 91 text

Level 6 Guru 91

Slide 92

Slide 92 text

PRPL PRPL is a pattern for structuring and serving Progressive Web Apps, with an emphasis on the performance of app delivery and launch. It stands for: ● Push, critical resources for the initial URL route. ● Render, initial route. ● Pre-cache, remaining routes. ● Lazy-load, and create remaining routes on demand. 92 Performance Optimisation - Fabio Cicerchia https://developers.google.com/web/fundamentals/performance/prpl-pattern/

Slide 93

Slide 93 text

AMP AMP is a way to build web pages for static content that render fast — Google Accelerated Mobile Pages in Google Index: ● 600 million AMP Pages ● 700,000 Domains ● 100+ Languages 93 Performance Optimisation - Fabio Cicerchia

Slide 94

Slide 94 text

AMP (cont’d) We found that AMP pages load four times faster, and use eight times less data than traditional mobile optimized pages — Jon Parise (Product Engineer, Pinterest) 94 Performance Optimisation - Fabio Cicerchia https://engineering.pinterest.com/blog/building-faster-mobile-web-experience-amp

Slide 95

Slide 95 text

AMP (cont’d) 95 Performance Optimisation - Fabio Cicerchia https://www.ampproject.org/docs/get_started/create

Slide 96

Slide 96 text

AMP (cont’d) 96 Gotchas: ● No 3rd party Javascript ● External resources must define static dimensions ● All CSS must be inline (50k max) ● Only GPU-Accelerated animations ● Prioritize Resource Loading Performance Optimisation - Fabio Cicerchia https://www.lireo.com/wordcamp-columbus-2016-using-google-accelerated-mobile-pages-with-wordpress/

Slide 97

Slide 97 text

ESI Edge Side Includes is a language specification for assembling fragments of web pages inside other web pages. Example: 97 Performance Optimisation - Fabio Cicerchia http://www.w3.org/TR/esi-lang https://www.smashingmagazine.com/2015/02/using-edge-side-includes-in-varnish/

Slide 98

Slide 98 text

Reverse Proxy A Reverse Proxy is a type of proxy server that retrieves resources on behalf of a client from one or more servers. These resources are then returned to the client as if they originated from the proxy server itself. Common choices: ● Varnish ● Squid ● HAProxy ● Nginx 98 Performance Optimisation - Fabio Cicerchia https://en.wikipedia.org/wiki/Reverse_proxy http://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server

Slide 99

Slide 99 text

Databases ● Oracle → https://oracle-base.com/articles/10g/performance-tuning-enhancements-10g ● PostgreSQL → https://wiki.postgresql.org/wiki/Performance_Optimization ● SQL Server → https://www.mssqltips.com/sql-server-tip-category/9/performance-tuning/ ● MongoDB → http://www.mikitamanko.com/blog/2013/12/06/mongodb-performance-bottlenecks-optimization-strategies-for-mongodb/ ● Redis → http://shokunin.co/blog/2014/11/11/operational_redis.html ● Memcached → http://cachelot.io/blog/2015/04/20/Speed-up-your-application-by-fine-tuning-Memcached.html ● Cassandra → https://tobert.github.io/pages/als-cassandra-21-tuning-guide.html ● OrientDB → http://orientdb.com/docs/2.1/Performance-Tuning.html ● Neo4j → https://neo4j.com/blog/neo4j-2-2-query-tuning/ ● CouchDB → http://guide.couchdb.org/draft/performance.html 99 Performance Optimisation - Fabio Cicerchia

Slide 100

Slide 100 text

Databases (cont’d) http://lmgtfy.com/?q=database+optimisation 100 Performance Optimisation - Fabio Cicerchia

Slide 101

Slide 101 text

Tools

Slide 102

Slide 102 text

102 Performance Optimisation - Fabio Cicerchia

Slide 103

Slide 103 text

103 Performance Optimisation - Fabio Cicerchia

Slide 104

Slide 104 text

104 Performance Optimisation - Fabio Cicerchia

Slide 105

Slide 105 text

Understand the Waterfall 105 Performance Optimisation - Fabio Cicerchia http://www.webperformancetoday.com/2014/03/18/waterfalls-101-how-to-use-a-waterfall-chart-to-diagnose-performance-pains/

Slide 106

Slide 106 text

Extra ● Show Slow www.showslow.com ● Webpagetest www.webpagetest.org ● Yslow http://yslow.org/ ● PageSpeed https://developers.google.com/speed/pagespeed/ ● GTMetrix http://gtmetrix.com/ ● RedBot http://redbot.org/ ● Pingdom https://tools.pingdom.com/ ● SPOF-O-Matic https://chrome.google.com/webstore/search/spof-o-matic ● XHProf http://github.com/facebook/xhprof ● HTTPWatch https://www.httpwatch.com/ 106 Performance Optimisation - Fabio Cicerchia

Slide 107

Slide 107 text

Extra (cont’d) ● Blackfire https://blackfire.io/ ● Yottaa http://www.yottaa.com/ ● Blitz https://www.blitz.io/ ● Load Impact https://loadimpact.com/ ● WonderNetwork https://wondernetwork.com/loadtesting ● Loader https://loader.io/ ● BlazeMeter https://www.blazemeter.com/ ● WebTuna http://www.webtuna.com/ ● Fiddler http://www.telerik.com/fiddler 107 Performance Optimisation - Fabio Cicerchia

Slide 108

Slide 108 text

Books

Slide 109

Slide 109 text

109 BTW, ask me later a 50% discount on these books ;) Performance Optimisation - Fabio Cicerchia

Slide 110

Slide 110 text

Are you lazy?

Slide 111

Slide 111 text

111 Performance Optimisation - Fabio Cicerchia

Slide 112

Slide 112 text

Which ones are the most important/common? These 5 ones: ● Reduce Page Size (<500Kb) ● Enable (GZip) Compression ● Reduce the number of roundtrips (<40 per page) ● HTTP Cache Headers (cache long & prosper) ● Structure the page (to improve render & download) ○ CSS First ○ Javascript last 112 Performance Optimisation - Fabio Cicerchia

Slide 113

Slide 113 text

Even if you apply just those 5 rules… Your page download times will drop by ~50% 113 Performance Optimisation - Fabio Cicerchia

Slide 114

Slide 114 text

Premature optimization is the root of all evil — Donald Knuth 114 Performance Optimisation - Fabio Cicerchia

Slide 115

Slide 115 text

BONUS

Slide 116

Slide 116 text

https://github.com/davidsonfellipe/awesome-wpo 116 Bonus #1 Performance Optimisation - Fabio Cicerchia

Slide 117

Slide 117 text

http://lmgtfy.com/?q=web+performance+optimisation 117 Bonus #2 Performance Optimisation - Fabio Cicerchia

Slide 118

Slide 118 text

Bonus #3 118 Performance Optimisation - Fabio Cicerchia

Slide 119

Slide 119 text

Thank you!

Slide 120

Slide 120 text

Questions?

Slide 121

Slide 121 text

121 Performance Optimisation - Fabio Cicerchia http://bit.do/skjobs