SlideShare a Scribd company logo
1 of 72
Rahul Yadav (@dxtr026)
Building fast and performant apps
Housing Go
Fast and Performant Apps
Source - http://static.comicvine.com/uploads/original/11120/111200613/4204672-3221623855-The_F.jpg
Fast and Performant Apps
Metrics to track
First Paint
First Meaningful Paint
First Interaction
Critical Rendering Path
Source: https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp
Version 1
{ connectivity : ‘3G’, location: ‘Dulles:Chrome’,
url : ‘https://housing.com/in/buy/mumbai/powai’ }
Metrics to track
First Paint
First Meaningful Paint
5.2s
7.4s
6.9s First Interaction
5.2s
7.4s
6.9s
First Paint
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-
scalable=no, minimum-scale=1.0' />
<meta name="mobile-web-app-capable" content="yes">
...
<link rel='stylesheet' href='https://housingcdn.com/mobile/searchView.css' type='text/css'/>
...
</head>
<body>
...
</body>
</html>
5.2s
7.4s
6.9s
First Paint
First Paint
{ connectivity : ‘3G’, location: ‘Dulles:Chrome’,
url : ‘https://housing.com/in/buy/mumbai/powai’ }
5.2s
7.4s
6.9s
First Paint
Inline Critical CSS
5.2s
7.4s
6.9s
First Paint
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv = 'Content-type' content = 'text/plain; charset=x-user-defined'/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0, minimum-scale=1"/>
...
<style type="text/css" id="app-css"> html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-
adjust:100%}body{margin:0}footer,header,main,menu,nav,section{display:block}li,ol,ul{list-style:none;padding:0;margin:0}a{background-
color:transparent;color:#000;text-decoration:none}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em
0}img{border:0}svg:not(:root){overflow:hidden}button,input,select{color:inherit;font:inherit;margin:0;outline:none}button{overflow:visible}button,se
lect{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}.shell .shell-
header{position:absolute;top:5px;padding:0 10px;line-height:40px;color:#fff;font-size:18px;-webkit-transition:transform .2s linear;-webkit-
transition:-webkit-transform .2s linear;transition:-webkit-transform .2s linear;transition:transform .2s linear;transition:transform .2s linear,-
webkit-transform .2s linear;-webkit-backface-visibility:hidden;-webkit-transform-style:preserve-3d;will-change:transform}.shell .shell-header.hide-
sheader{-webkit-transform:translateY(-50px);transform:translateY(-50px)} </style>
<style type="text/css" id="chunk-searchView"> .collectioncard{width:210px;height:83px;background-color:#fff;position:relative;margin-
right:12px;box-shadow:0 2px 2px rgba(0,0,0,.1);border-bottom:1px solid rgba(0,0,0,.1)}.collectioncard>div:last-child{margin-right:0}.collectioncard
.col-top-box{height:40px;padding:12px}.collectioncard .col-top-box .col-title{margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-
space:nowrap}.collectioncard .col-top-box.stub{margin:0;background-color:#f9f9f9}.collectioncard .col-bottom-box{width:100%;line-
height:18px;color:#7323dc;padding:12px;border-top:1px solid #e6e6e6;display:block;font-size:12px}.collectioncard .col-bottom-
box.stub{width:170px;padding:8px;margin:14px 0 0 10px;background-color:#f9f9f9;border-color:#f9f9f9}.collectioncard .col-vl{width:49%;text-
align:left}.home-seed-container .seed-elem-container{border-bottom:none;box-shadow:0 1px 2px rgba(0,0,0,.1);margin-
bottom:10px;overflow:hidden}.home-seed-container .seed-elem-container:last-of-type{margin-bottom:0}.recent-search .icon-last-search{font-
size:60px;color:#e62878}
</style>
...
</head>
<body>
...
</body>
</html>
5.2s
7.4s
6.9s
First Paint
{ connectivity : ‘3G’, location: ‘Dulles:Chrome’,
url : ‘https://housing.com/in/buy/mumbai/powai’ }
5.2s
7.4s
6.9s
First Paint
5.2s
7.4s
6.9s
Metrics to track
First Paint
First Meaningful Paint
5.2s
7.4s
6.9s First Interaction
Metrics to track
First Paint
First Meaningful Paint
5.2s
7.4s
6.9s First Interaction
3.7s
7.0s
6.5s
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
6.5s First Interaction
3.7s
7.0s
6.5s
First Interaction
index.html
vendor.js app.js view.js 3.7s
7.0s
6.5s
First Interaction
First Interaction
Plain script tags - Download together, execute in order after any pending CSS, blocks
rendering until complete and is itself parse blocking.
3.7s
7.0s
6.5s
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
...
<script src="vendor.js"></script>
<script src="app.js"></script>
<script src="view.js"></script>
</body>
</html>
First Interaction
Defer - Download together, execute in order just before DOMContentLoaded.
3.7s
7.0s
6.5s
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
...
<script src=“vendor.js" defer ></script>
<script src=“app.js" defer ></script>
<script src=“view.js" defer ></script>
</body>
</html>
First Interaction
Aysnc - Download together, execute in whatever order they download in.
3.7s
7.0s
6.5s
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
...
<script src=“vendor.js" async ></script>
<script src=“app.js" async ></script>
<script src=“view.js" async ></script>
</body>
</html>
First Interaction
Source - http://images2.fanpop.com/image/photos/9800000/Chemical-X-powerpuff-girls-movie-9885363-427-320.jpg
3.7s
7.0s
6.5s
First Interaction
Async false - Download together, execute in order as soon as all download.
3.7s
7.0s
6.5s
<!DOCTYPE html>
<html lang="en">
<head>
...
</head>
<body>
...
<script>
[‘vendor.js’,‘app.js','view.js'].forEach( function(src) {
var script = document.createElement('script');
script.src = src;
script.async = false;
document.head.appendChild(script);
});
</script>
</body>
</html>
First Interaction
When does the app.js load ?
When does the view.js load ?
When does the componentDidMount of the view gets called (JS interactive) ?
3.7s
7.0s
6.5s
First Interaction
3.7s
7.0s
6.5s
window.performance.mark(‘label’)
First Interaction
3.7s
7.0s
6.5s
4500
5125
5750
6375
7000
1 2 3 4
Time(ms)
<script> <script defer></script> Async = false
Timings for app.js
First Interaction
3.7s
7.0s
6.5s
4500
5375
6250
7125
8000
1 2 3 4
Time(ms)
<script> <script defer></script> Async = false
Timings for view.js
First Interaction
3.7s
7.0s
6.5s
4500
5375
6250
7125
8000
1 2 3 4
Time(ms)
<script> <script defer></script> Async = false
Timings for interaction
First Interaction
● dynamically inserted script tags
● async=false
http://www.html5rocks.com/en/tutorials/speed/script-loading/
3.7s
7.0s
6.5s
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
6.5s First Interaction
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
6.5s First Interaction
3.7s
7.0s
4.7s
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.7s First Interaction
First Interaction
Browser Preloaders
Source -http://www.celebmaestro.com/wp-content/uploads/2016/04/scary-peeper-a-peeping-tom-figurine-to-scare-people-8873-1.jpg
3.7s
7.0s
4.7s
First Interaction
Source -http://www.celebmaestro.com/wp-content/uploads/2016/04/scary-peeper-a-peeping-tom-figurine-to-scare-people-8873-1.jpg
3.7s
7.0s
4.7s
Pre-browsing Meta Tags
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
DNS resolution
3.7s
7.0s
4.7s
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel=“dns-prefetch" href="//assets-0.housing.com">
...
</head>
<body>
...
</body>
</html>
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
TCP handshake + TLS negotiation
3.7s
7.0s
4.7s
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="preconnect" href="//assets-1.housing.com">
...
</head>
<body>
...
</body>
</html>
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
Resource definitely needed in future
3.7s
7.0s
4.7s
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="prerender" href=“https://housing.com”>
...
</head>
<body>
...
</body>
</html>
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
Resource definitely needed in future.
Optional low priority fetch
3.7s
7.0s
4.7s
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="prefetch" href=“mystery-man.jpg”>
...
</head>
<body>
...
</body>
</html>
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
Mandatory and high-priority fetch for a resource that is necessary for the current
navigation
3.7s
7.0s
4.7s
<!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="preload" href=“app.js” as=“script”>
...
</head>
<body>
...
</body>
</html>
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.7s First Interaction
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.7s First Interaction
3.7s
7.0s
4.6s
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.6s First Interaction
3.7s
7.0s
4.6s
First Meaningful Paint
First Paint
Client Side Rendering
3.7s
7.0s
4.6s
First Meaningful Paint
3.7s
7.0s
4.6s
First Meaningful Paint
3.7s
7.0s
4.6s
First Paint
Server Side Rendering
3.7s
7.0s
4.6s
First Meaningful Paint
3.7s
7.0s
4.6s
First Meaningful Paint
3.7s
7.0s
4.6s
First Meaningful Paint
Server Side Rendered App
3.7s
7.0s
4.6s
Why server side rendering ?
3.7s
7.0s
4.6s
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.6s First Interaction
Metrics to track
First Paint
First Meaningful Paint
3.7s
7.0s
4.6s First Interaction
3.8s
3.8s
4.6s
Metrics to track
First Paint
First Meaningful Paint
3.8s
3.8s
4.6s First Interaction
Streaming response from server
Source - https://www.colourbox.com/preview/1988328-3d-illustration-of-laptop-computer-with-binary-code-stream.jpg
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
First Meaningful Paint
3.8s
3.8s
4.6s
Metrics to track
First Paint
First Meaningful Paint
3.8s
3.8s
4.6s First Interaction
Metrics to track
First Paint
First Meaningful Paint
3.8s
3.8s
4.6s First Interaction
3.8s
3.8s
4.2s
Metrics to track
First Paint
First Meaningful Paint
5.2s
7.4s
6.9s First Interaction
3.8s
3.8s
4.2s
Thank You!
@dxtr026
@HousingEngg
Housing GO
3.8s
3.8s
4.7s
Metrics to track
defer and async write up
remove 1s from the console.time
change image of dans prefetch
First Interaction to JS enabled
add the streaming images
% improvements
add speed index
read about async=false
read about pre-render
change video
First Interaction
Resource : https://css-tricks.com/prefetching-preloading-prebrowsing/
3.7s
7.0s
4.7s
First Interaction
3.7s
7.0s
6.5s

More Related Content

What's hot

Different way to share data between controllers in angular js
Different way to share data between controllers in angular jsDifferent way to share data between controllers in angular js
Different way to share data between controllers in angular jscodeandyou forums
 
Angular vs React for Web Application Development
Angular vs React for Web Application DevelopmentAngular vs React for Web Application Development
Angular vs React for Web Application DevelopmentFITC
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.jsDev_Events
 
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Ukraine
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsJames Pearce
 
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 Cutting edge HTML5 API you can use today (by Bohdan Rusinka) Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)Binary Studio
 
Meteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoMeteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoArabNet ME
 
High Performance Snippets
High Performance SnippetsHigh Performance Snippets
High Performance SnippetsSteve Souders
 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleApigee | Google Cloud
 
Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoMaxime Najim
 
The Glass Class - Tutorial 2 - Mirror API
The Glass Class - Tutorial 2 - Mirror APIThe Glass Class - Tutorial 2 - Mirror API
The Glass Class - Tutorial 2 - Mirror APIGun Lee
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJSBoris Dinkevich
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJSGregor Woiwode
 
10 practices that every developer needs to start right now
10 practices that every developer needs to start right now10 practices that every developer needs to start right now
10 practices that every developer needs to start right nowCaleb Jenkins
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
 

What's hot (20)

Different way to share data between controllers in angular js
Different way to share data between controllers in angular jsDifferent way to share data between controllers in angular js
Different way to share data between controllers in angular js
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Angular vs React for Web Application Development
Angular vs React for Web Application DevelopmentAngular vs React for Web Application Development
Angular vs React for Web Application Development
 
Angular js
Angular jsAngular js
Angular js
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.js
 
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
GlobalLogic Test Automation Online TechTalk “Playwright — A New Hope”
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
 
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 Cutting edge HTML5 API you can use today (by Bohdan Rusinka) Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
Cutting edge HTML5 API you can use today (by Bohdan Rusinka)
 
Meteor.js Workshop by Dopravo
Meteor.js Workshop by DopravoMeteor.js Workshop by Dopravo
Meteor.js Workshop by Dopravo
 
Android in practice
Android in practiceAndroid in practice
Android in practice
 
High Performance Snippets
High Performance SnippetsHigh Performance Snippets
High Performance Snippets
 
HATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API StyleHATEOAS 101 - Opinionated Introduction to a REST API Style
HATEOAS 101 - Opinionated Introduction to a REST API Style
 
Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San Diego
 
Training On Angular Js
Training On Angular JsTraining On Angular Js
Training On Angular Js
 
The Glass Class - Tutorial 2 - Mirror API
The Glass Class - Tutorial 2 - Mirror APIThe Glass Class - Tutorial 2 - Mirror API
The Glass Class - Tutorial 2 - Mirror API
 
Using ReactJS in AngularJS
Using ReactJS in AngularJSUsing ReactJS in AngularJS
Using ReactJS in AngularJS
 
A gently introduction to AngularJS
A gently introduction to AngularJSA gently introduction to AngularJS
A gently introduction to AngularJS
 
10 practices that every developer needs to start right now
10 practices that every developer needs to start right now10 practices that every developer needs to start right now
10 practices that every developer needs to start right now
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
Vaadin Components
Vaadin ComponentsVaadin Components
Vaadin Components
 

Similar to Building Fast Apps with Server-Side Rendering (SSR

Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Eliran Eliassy
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)Steve Souders
 
JavaScript Perfomance
JavaScript PerfomanceJavaScript Perfomance
JavaScript PerfomanceAnatol Alizar
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.jsMek Srunyu Stittri
 
Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)Clarence Ngoh
 
Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Filippo Matteo Riggio
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10Chris Schalk
 
SPKonferenz 2017 - Introducing SDKs for Microsoft Graph
SPKonferenz 2017 - Introducing SDKs for Microsoft GraphSPKonferenz 2017 - Introducing SDKs for Microsoft Graph
SPKonferenz 2017 - Introducing SDKs for Microsoft GraphDragan Panjkov
 
Story about module management with angular.js
Story about module management with angular.jsStory about module management with angular.js
Story about module management with angular.jsDavid Amend
 
Gradle for Android Developers
Gradle for Android DevelopersGradle for Android Developers
Gradle for Android DevelopersJosiah Renaudin
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsMatteo Manchi
 
BlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorksBlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorksmwbrooks
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Juliano Martins
 
Indic threads pune12-using play2.0 for building an insurance website
Indic threads pune12-using play2.0 for building an insurance websiteIndic threads pune12-using play2.0 for building an insurance website
Indic threads pune12-using play2.0 for building an insurance websiteIndicThreads
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basicsAnton Narusberg
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayAll Things Open
 

Similar to Building Fast Apps with Server-Side Rendering (SSR (20)

Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
JavaScript Perfomance
JavaScript PerfomanceJavaScript Perfomance
JavaScript Perfomance
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
 
Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)Having Fun Building Web Applications (Day 1 Slides)
Having Fun Building Web Applications (Day 1 Slides)
 
Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
Let's react - Meetup
Let's react - MeetupLet's react - Meetup
Let's react - Meetup
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
 
SPKonferenz 2017 - Introducing SDKs for Microsoft Graph
SPKonferenz 2017 - Introducing SDKs for Microsoft GraphSPKonferenz 2017 - Introducing SDKs for Microsoft Graph
SPKonferenz 2017 - Introducing SDKs for Microsoft Graph
 
Story about module management with angular.js
Story about module management with angular.jsStory about module management with angular.js
Story about module management with angular.js
 
Gradle for Android Developers
Gradle for Android DevelopersGradle for Android Developers
Gradle for Android Developers
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
Mobile optimization
Mobile optimizationMobile optimization
Mobile optimization
 
BlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorksBlackBerry DevCon 2011 - PhoneGap and WebWorks
BlackBerry DevCon 2011 - PhoneGap and WebWorks
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
 
Indic threads pune12-using play2.0 for building an insurance website
Indic threads pune12-using play2.0 for building an insurance websiteIndic threads pune12-using play2.0 for building an insurance website
Indic threads pune12-using play2.0 for building an insurance website
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP AnywayI Know It Was MEAN, But I Cut the Cord to LAMP Anyway
I Know It Was MEAN, But I Cut the Cord to LAMP Anyway
 

Recently uploaded

ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)simmis5
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSSIVASHANKAR N
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdfKamal Acharya
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsRussian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGSIVASHANKAR N
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduitsrknatarajan
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Christo Ananth
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINESIVASHANKAR N
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdfKamal Acharya
 

Recently uploaded (20)

ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)Java Programming :Event Handling(Types of Events)
Java Programming :Event Handling(Types of Events)
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLSMANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
MANUFACTURING PROCESS-II UNIT-5 NC MACHINE TOOLS
 
University management System project report..pdf
University management System project report..pdfUniversity management System project report..pdf
University management System project report..pdf
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur EscortsRussian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
Russian Call Girls in Nagpur Grishma Call 7001035870 Meet With Nagpur Escorts
 
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTINGMANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
MANUFACTURING PROCESS-II UNIT-1 THEORY OF METAL CUTTING
 
UNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular ConduitsUNIT-II FMM-Flow Through Circular Conduits
UNIT-II FMM-Flow Through Circular Conduits
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINEMANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
MANUFACTURING PROCESS-II UNIT-2 LATHE MACHINE
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 

Building Fast Apps with Server-Side Rendering (SSR

Editor's Notes

  1. This talk is mostly derived from the experiences and learnings we had while developing our PWA, Housing Go.
  2. So, what are fast or performant apps. What the one thing that comes to one’s mind when talking about fast apps.
  3. Its page load time, Page load time though may not be the accurate indicator or perceived speed but that what is there on top of our mind. The most important factor from which page load time is derived is Critical Rendering Path. You optimize you critical rendering path, you fix your CRP everything will fall into place.
  4. I will show you two versions of this webpage, one version will not be optimized for the critical render path and one version (the page you are reading) is optimized.
  5. What is the critical rendering path? It is the series of events that must take place to render (display) the initial view of a webpage. Example: get html > get resources > parse > display webpage Optimizing these events result in significantly faster webpages.
  6. This is how it looks when a user opens the website on a 3G connection.
  7. By default CSS is treated as a render blocking resource, which means that the browser will hold rendering of any processed content until the CSSOM is constructed. Rendering blocking css can sometimes be the reason for the white screens that we see on browsers.
  8. Let me show you an example. Here the first resource requested in the css for our page. It's the first request as it was in the head at the start. The content Download completed at 3.2s but the browser waits until the css is loaded and parsed to start render, which happens at 4.6s.
  9. This is how it looks when a user opens the website on a 3G connection.
  10. Divide your css into core and noncore, the most important css which is required for the content to be shown to user, is inlined.
  11. Divide your css into core and noncore, the most important css which is required for the content to be shown to user, is inlined.
  12. This is a webpage test with inline css show that the content downloaded still gets completed at around 3.1 seconds, even though the doc size is increased. The improvement is that start render happens at around 3.5s, improvement of about 1s.
  13. By default CSS is treated as a render blocking resource, which means that the browser will hold rendering of any processed content until the CSSOM is constructed. Rendering blocking css can sometimes be the reason for the white screens that we see on browsers.
  14. In modern SPAs it's important to maintain separate chunks of JS files and at the same time download and execute them synchronously. In context of housing.com there are generally 3 files that we load for our app to work. General download techniques are as follows.
  15. Spec says: Download together, execute in order after any pending CSS, block rendering until complete. Browsers say: Yes sir!
  16. Spec says: Download together, execute in order just before DOMContentLoaded. Ignore “defer” on scripts without “src”. IE < 10 says: I might execute 2.js halfway through the execution of 1.js. Isn’t that fun?? Other browsers say: Ok, but I might not ignore “defer” on scripts without “src”.
  17. Spec says: Download together, execute in whatever order they download in. The browsers in red say: What’s ‘async’? I’m going to load the scripts as if it weren’t there. Other browsers say: Yeah, ok.
  18. What is the real solution .. putting JS at the bottom of the page.
  19. Spec says: Download together, execute in order as soon as all download. http://www.html5rocks.com/en/tutorials/speed/script-loading/ async = false telll the browser to not execute the scripts asynchronously and in order they are added dynamically generated scripts do not block rendering explain html async=false
  20. How does talk console.time works.
  21. Mention about vendor.js and manifest.js ,
  22. Mention about vendor.js and manifest.js
  23. Mention about vendor.js and manifest.js
  24. Loading scripts this way is supported by everything that supports the async attribute, with the exception of Safari 5.0 (5.1 is fine). Additionally, all versions of Firefox and Opera are supported as versions that don’t support the async attribute conveniently execute dynamically-added scripts in the order they’re added to the document anyway.
  25. When the browser is blocked on a script, a second lightweight parser scans the rest of the markup looking for other resources e.g. stylesheets, scripts, images etc., that also need to be retrieved. The pre-loader then starts retrieving these resources in the background with the aim that by the time the main HTML parser reaches them they may have already been downloaded and so reduce blocking later in the page. Pre-loaders extract URLs from markup and don’t / cannot execute javascript so any URLs inserted using javascript aren’t visible to it.
  26. When the browser is blocked on a script, a second lightweight parser scans the rest of the markup looking for other resources e.g. stylesheets, scripts, images etc., that also need to be retrieved. The pre-loader then starts retrieving these resources in the background with the aim that by the time the main HTML parser reaches them they may have already been downloaded and so reduce blocking later in the page. Pre-loaders extract URLs from markup and don’t / cannot execute javascript so any URLs inserted using javascript aren’t visible to it.
  27. Mandatory and high-priority fetch for a resource that is necessary for the current navigation
  28. By default CSS is treated as a render blocking resource, which means that the browser will hold rendering of any processed content until the CSSOM is constructed. Rendering blocking css can sometimes be the reason for the white screens that we see on browsers.
  29. Divide your css into core and noncore, the most important css which is required for the content to be shown to user, is inlined.
  30. Divide your css into core and noncore, the most important css which is required for the content to be shown to user, is inlined.
  31. Divide your css into core and noncore, the most important css which is required for the content to be shown to user, is inlined.
  32. Will talk about it in more detail