SlideShare a Scribd company logo
1 of 69
Download to read offline
August 18, 2010
YEP, WEB ON MOBILE IS SLOW
100 ms faster:	

1% increased revenue
1 sec delay:	

2.8% drop in revenue
http://www.slideshare.net/stubbornella/designing-fast-websites-presentation	

http://slideshare.net/markstanton/speed-matters
SLOW IS NOT COOL
...even less cool on mobile
For Q3 2013 that is $17mill.
THE VALUE CHAIN
developer server internet telco	
  network device
Doesn’t really make things more
difficult, but reveal a few issues
browser
WHY IS MOBILE SLOWER?
• Network Latency	

• Available Bandwidth
• The Implementation
• Processing Power	

• Browser 	

• Battery Preserving Strategies	

• Memory
FUN-FACT
Loading apple.com consume
1.41% of battery life.

http://www2012.wwwconference.org/proceedings/proceedings/p41.pdf
Not so
12 - 4% in 8 mins
of web surfing
“4G” BANDWIDTH
Mbps
0
12,5
25
37,5
50
Location
1Location
1Location
2Location
3Location
4Location
5Location
6Location
7Location
8Location
9Location
9Location
9Location
10Location
11Location
12Location
12Location
13Location
13Location
14Location
15Location
16Location
17
15,18
18,69 18,17
6,18
14,99
13,17
19,65 19,71 19,96 19,07
8,86
2,77
0,15 1,47
18,85
9,16
19,65 20,16
16,5
20,04
9,59
0,1
36,33 36,39
24,76
0,36
9,15
42,49
30,55
38,79
24,01
7,86
11,78
0 0
21,5
44,09
10,49 10,61
12,34
16,29
2,53
13,57
1,29
Netcom Telenor
VG 10.11.2013
CURRENT STATE
OF THE WEB
AND MOBILE
1.8 MB
3 %7 %
4 %
3 %
17 %
65 %
Images Scripts
CSS Flash
Other HTML
in 95 requests on average
http://httparchive.org/
1.8 MB
in 95 requests on average
• Avg. speed: 2Mbps (cisco)	

• 1 Mbps = 0.12 MB/s	

• 1.8 / 0.24 = 7,5s
7,5Seconds	

download
time
http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_c11-520862.html
1.8 MB
in 95 requests on average
•100-200 ms pr roundtrip	

•Depends....(DNS, pipelining,
concurrentTCP connections
etc.)
9,5Seconds	

latency in
total
LATENCY
3g 4g
Control plane 200–2,500 ms 50–100 ms
DNS lookup 200 ms 100 ms
TCP handshake 200 ms 100 ms
TLS handshake 200–400 ms 100–200 ms
HTTP request 200 ms 100 ms
Total latency overhead 200–3500 ms 100–600 ms
O’Reilly: High Performance Browser Networking
MOBILE
NETWORKS ARE
FREAKING
MAGIC!
a quick look on how they work
.01 s.
User opens app. 	

Wakes the radio. Device
sends a request to the cell
tower to use the network
Tower signaling. 	

Device promoted to full
power state. Process
takes about 2 seconds
2.1 s.
Only needed when
device is idle
App is “on line”	

App does a DNS lookup.
Roundtrip is 100-200 ms.
2.2 s.
Latency,
anything from
100 - >500ms
TCP connection	

HTML document returned
2.4 s.
2.4 s, the
HTML page is
downloaded
Browser rendering	

Fetches linked resources.
More DNS lookups (one for
each unique domain) and
TCP connections.
2.6 s.
Page displayed	

Puh...
3-60 s.
http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=YmB5ErqPR7b
1.8 MB
in 95 requests on average
•Wake up radio (one time)	

•TCP and DNS (one time)	

•95 round trips (6 req pr conn.)	

•Downloading 1.8 mb over 2Mbps
11,2Seconds	

total
+ rendering time in the browser	

+ server response time
Disclaimer: lots of assumptions in this calculation!
GOOGLE: 7.5 S.
*at the time, the average web site was 1,2MB. Minus the 2s wakeup, we’re in the
ballpark.
DEVCONFU.EU
• Load event fired: 32 s.	

• 2.3 MB	

• 180 requests
iPhone 4 iOS 5.1 on 3G (latency 300ms)
SERVE A PAGE TO A MOBILE DEVICE IN
LESS THAN 1 SECOND?
A great overview by Ilya Grigorik 	

bit.ly/mobile-barrier
WHO CARES?
The users care!
Telco Network	

53,53 %
Other	

46,47 %
How users connect. Page views per connection
type. (Scandinavian Countries). Source:
Mobiletech
WHY USERS CARE?
http://mobiforge.com/designing/blog/performance-money-part-1-end-users-wallet
➜EuropeanVodafone
account roaming in US
SO, WHAT IS OUR CURRENT
APPROACH TO THIS?
ENTER
RESPONSIVE
WEB DESIGN
Yay!
RESPONSIVE
WEB DESIGN
Doh...
Much smaller	

6 %
Same size
72 %
Smaller	

22 %
http://www.guypo.com/uncategorized/real-world-rwd-performance-take-2/
Also about the same
number of
HTTP requests
RWD IS A TECHNIQUE
Nothing wrong with the technique! It is brilliant!
The famous Iceberg: @brad_frost
RWD != MOBILE FRIENDLY
but an important step in the right direction
Load time: 9.07s *	

Size: 288.14 kb
Load time: 2.36 s *	

Size: 36.59 kb
*) Load event fired. - More on how the built the new BBC News site: http://slidesha.re/14IYNOO
http://www.bbc.co.uk/blogs/bbcinternet/2012/03/bbc_news_mobile_site_refresh.html
PRIMARY ISSUES
• Over downloading
• Unused assets	

• Large images	

• Stuff...	

!
• Network issues
• High Latency	

• Bandwidth	

• Flaky connection	

!
• Processing power
• Slower CPU	

• Memory	

• Cache limits
30-40%
SLOWER WITH
JAVASCRIPT
ENABLED
PARET0
PRINCIPLE
Responsive Design is
20% of the work, 	

and might get you
80% on the way
the “80/20 rule”
THE LAST 20%
will improve performance by 80%
Our example: increasing
performance by
80%
gives a load time of 2,2s
SOMETIMES IT MAKES SENSE TO MULTI-SERVE
...or at least do layoutadjustments to components
When all you have is a hammer,	

every problem looks like a nail
RWD
device or browser
HOW CAN WE
FIX THIS?
What can we do to help
front end developers make
use of server side stuff?
THE VALUE CHAIN
Adaptive Responsive
developer server internet telco	
  network device browser
RANT
There is a web server.A very capable one, too. 	

Use it!
SERVER?
How to make the server side
available to front end devs
http://mobile.smashingmagazine.com/2013/04/09/improve-mobile-support-with-server-side-enhanced-responsive-design/
RESS
REsponsive design with Server
Side components
A BALANCING ACT
no right answer
PURPOSE OF RESS
• Reduce need for client side
processing	

• Eliminate “over downloading”	

• Let the server do the work
instead of the browser
RESS IN A NUT SHELL
•RWD provide a sensible default or fallback	

•The server does the optimization
Reduce asset size
Selective markup
Ad serving
Social networks
Minify
zip
Cache
etc.
INGREDIENTS OF RESS
Hello, I know exactly how to make you shine!
Information about the
requesting device,
network, etc.
Request/Response
NOT A CRIME!
82% of top 100 Alexa sites use
Device Detection
In the case of
Mashable, we also
detect the type of
device and change
the site’s behavior
accordingly.
“
”
http://www.circleid.com/posts/20120111_analysis_of_server_side_mobile_web_detection/	

http://mashable.com/2012/12/11/responsive-web-design/
THERE IS A DIFFERENCE
User-Agent sniffing
var	
  isIpad	
  =	
  /iPad/i.test(navigator.userAgent);
Feature Detection
var	
  appCache=	
  function()	
  {	
  
	
  	
  return	
  !!window.applicationCache;	
  
};
Device Detection
Using the User-Agent (++) as a key to look up in a data base.
http://www.otsukare.info/2013/10/02/ua-parsing
NYTIMES
!
var ua = navigator.userAgent;!
window.BBDevice = {!
isOldBB: false,!
indexOfVersion: ua.indexOf("Version/"),!
indexOfBB: ua.indexOf("BlackBerry"),!
fullVersion: null,!
version: null!
};!
if (window.BBDevice.indexOfBB >= 0) {!
existingClasses = document.body.className = existingClasses + " bb";!
if (ua.indexOf("WebKit") < 0) {!
existingClasses = document.body.className = existingClasses + " oldbb";!
window.BBDevice.isOldBB = true;!
window.BBDevice.fullVersion = ua.substr(window.BBDevice.indexOfBB);!
window.BBDevice.fullVersion = window.BBDevice.fullVersion.substr(window.BBDevice.fullVersion.indexOf("/") + 1,
window.BBDevice.fullVersion.indexOf(" "));!
window.BBDevice.version = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf("."));!
} else {!
if (window.BBDevice.indexOfVersion >= 0) {!
window.BBDevice.indexOfVersion = window.BBDevice.indexOfVersion + 8;!
window.BBDevice.fullVersion = ua.substr(window.BBDevice.indexOfVersion);!
window.BBDevice.fullVersion = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf(" "));!
window.BBDevice.version = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf("."));!
}!
}!
} else if (ua.indexOf("MSIE 9.0") >= 0 || ua.indexOf("IEMobile/9.0") >= 0) {!
existingClasses = document.body.className = existingClasses + " win75";!
window.WMDevice = true;!
} else if (ua.indexOf("MSIE 10.0") >= 0 || ua.indexOf("IEMobile/10.0") >= 0) {!
window.WMDevice = true;!
} else if (ua.indexOf("Opera Mini") >= 0) {!
window.OperaMiniDevice = true;!
}
http://mpulp.mobi/2013/05/user-agent-sniffing-on-the-new-nyt-mobile-site/
http://mobile.nytimes.com
FEATURES OF A DDR
• Nice place to store custom stuff	

• “Business rules”	

• Specifics to your site	

• Override feature detected features	

• If a feature works, but not well enough to make it useable 	

• False positives (not a HUGE issue, but still)	

• Available server side too	

• Adapt and optimize stuff before sending to client
Device Description
Repository
EXAMPLE
if	
  ($type_of_device	
  ==	
  ”smartTV”)	
  
include(TVnav.php);	
  
else	
  
include(nav.php);	
  
EXAMPLE
if	
  ($supports_h264)	
  
echo	
  ‘<video	
  .../>’;	
  
else	
  
echo	
  ‘<a	
  href=”...”>Download</a>’;	
  
WHAT WE ENDED UP WITH
DEVICE DETECTION
RESTful API
GET	
  http://ddr.demo.wew.io/c/pointing_method
Response
{“pointing_method":"touchscreen"}	
  	
  
EXAMPLE
var	
  http	
  =	
  new	
  XMLHttpRequest();	
  
http.open("GET",	
  "http://ddr.demo.wew.io/c/brand_name",	
  true);	
  
http.onreadystatechange	
  =	
  function()	
  {	
  
if	
  (http.readyState	
  ==	
  4)	
  
console.log(http.responseText);	
  
}	
  
http.send();
EXAMPLE
public	
  function	
  get($capa){	
  
	
   foreach(getallheaders()	
  as	
  $key	
  =>	
  $value)	
  {	
  
	
   	
   if	
  ($key	
  !="Host")	
  	
  
	
   	
   	
  	
  $this-­‐>headers[]	
  =	
  $key	
  .	
  ':	
  '	
  .	
  $value;	
  
	
   }	
  
	
   $url	
  =	
  $this-­‐>service	
  .	
  $capa;	
  
	
   $curl	
  =	
  curl_init($url);	
  
	
   curl_setopt($curl,	
  CURLOPT_RETURNTRANSFER,	
  true);	
  
	
   curl_setopt($curl,	
  CURLOPT_HTTPHEADER,	
  $this-­‐>headers);	
   	
   	
  
	
   $this-­‐>response	
  =	
  curl_exec($curl);	
  
	
   curl_close($curl);	
  
	
   return	
  json_decode($this-­‐>response)-­‐>$capa;	
  
}
IMAGE OPTIMIZING
<img	
  src="http://img.demo.wew.io/http://example.com/image.jpg"/>
Simple Usage
Advanced Usage
<img	
  src=”http://img.demo.wew.io/vpw_1024/bp_w/pc/w_31/m_48/n_98/http://
example.com/img.png”/>
EXAMPLE
<div	
  data-­‐picture	
  data-­‐alt="A	
  beautiful	
  butterfly">	
  
	
   <div	
  data-­‐src="http://img.demo.wew.io/px_100/http://exampe.com/image.png"></div>	
  
	
   <div	
  data-­‐src="http://img.demo.wew.io/px_320/http://exampe.com/image.png"	
  	
  
data-­‐media="(min-­‐width:	
  320px)"></div>	
  
	
   <div	
  data-­‐src="http://img.demo.wew.io/px_320/@_2/http://exampe.com/image.png"	
  	
  
data-­‐media="(min-­‐width:	
  320px)	
  and	
  (-­‐webkit-­‐min-­‐device-­‐pixel-­‐ratio:	
  2.0)"></div>	
  
!
	
   <noscript>	
  
	
   	
  	
  	
  	
  <img	
  src="http://img.demo.wew.io/px_10/http://exampe.com/image.png">	
  
	
   </noscript>	
  
</div>
Picturefill: https://github.com/scottjehl/picturefill.
Using Picturefill
CSS OPTIMIZATION
Device Capabilities as Media Features
Removing overhead and excess styles
@media	
  (-­‐wew-­‐pointing-­‐method:	
  touchscreen){	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  a	
  {	
  	
  	
  
padding:	
  10px;	
  
}	
  	
  	
  	
  	
  	
  	
  
}
@media	
  all	
  and	
  (min-­‐width:	
  1500px){	
  	
  
	
   //removed	
  for	
  devices	
  where	
  1500px	
  is	
  impossible.	
  e.g.	
  iPhones	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  body{color:	
  green;}	
  	
  	
  	
  	
  	
  	
  	
  	
  
}
Server Side rendering
EXAMPLE
<!doctype	
  html>	
  
<html>	
  
<head>	
  
!
	
  	
  <link	
  rel="stylesheet"	
  href="//css.demo.wew.io/http://example.com/style.css”/>	
  
!
</head>	
  
<body>	
  
!
	
  <img	
  src="http://img.demo.wew.io/http://example.com/image.jpg"/>	
  
!
<script>	
  
	
  var	
  w=new	
  wew();	
  
	
  w.getSet("myset",cb);	
  
</script>	
  
!
</body>	
  
</html>	
  
•Markup lives anywhere	

•CSS and images are proxied,
optimized and cached	

•Device data available client side
FTW?
Does adaptive design have a
positive impact on performance?
EFFECT
0
108
215
323
430
Size
No RESS With RESS
0
950
1 900
2 850
3 800
Time
0
575
1 150
1 725
2 300
Latency
20% less data
50% faster
download
73% reduced
latency
BUT...
CAN’T DO MAGIC
0
975
1 950
2 925
3 900
Onload
no WeW with RESS
Only 4% faster in total
Due to 	

lazy loading of assets	

and repaints etc.
Lazy loading good
or bad? Depends...
FUN-FACT
Loading apple.com consume 1.41% of battery
life.

http://www2012.wwwconference.org/proceedings/proceedings/p41.pdf
Not so
12 - 4% in 8 mins of
web surfing
MARSHALLHEADPHONES.COM
• Down from 1.6MB to 432KB	

• Load time down from 6,1s to 1,9s
WURFL.IO
PERFORMANCE FRONT END
STARTS WITH THE BACK END
Too much is left to the browser to figure out.
THE RULES
1. Make Fewer HTTP Requests	

2. Use a Content Delivery Network	

3. Add an Expires Header	

4. Gzip Components	

5. Put Stylesheets at theTop	

6. Put Scripts at the Bottom	

7. Avoid CSS Expressions	

8. Make JavaScript and CSS External	

9. Reduce DNS Lookups	

10. Minify JavaScript	

11. Avoid Redirects	

12. Remove Duplicate Scripts	

13. Configure ETags	

14. Make AJAX Cacheable
By Steve Souders: http://stevesouders.com/hpws/rules.php
Most of these are
implemented
server side.
SUMMING UP
developer server internet telco	
  network device browser
We...
...must do stuff
here...
...to
relieve...
...and...
...to make life
easier for...
...and...
THANK YOU
John Arne Sæterås
Twitter: @jonarnes
VP of innovation at ScientiaMobile.com
http://www.slideshare.net/jonarnes/

More Related Content

What's hot

The Physical World meets the Web
The Physical World meets the WebThe Physical World meets the Web
The Physical World meets the WebMaximiliano Firtman
 
Its timetostopstalling cambridgemot
Its timetostopstalling cambridgemotIts timetostopstalling cambridgemot
Its timetostopstalling cambridgemotDoug Sillars
 
Its timetostopstalling swp_munich
Its timetostopstalling swp_munichIts timetostopstalling swp_munich
Its timetostopstalling swp_munichDoug Sillars
 
Its timetostopstalling limerick
Its timetostopstalling limerickIts timetostopstalling limerick
Its timetostopstalling limerickDoug Sillars
 
Forensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsForensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsNicholas Jansma
 
Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015Maximiliano Firtman
 
Its timetostopstalling londroid
Its timetostopstalling londroidIts timetostopstalling londroid
Its timetostopstalling londroidDoug Sillars
 
Mobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOTMobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOTDoug Sillars
 
Velocity 2012: The 90-Minute Mobile Optimization Life Cycle
Velocity 2012: The 90-Minute Mobile Optimization Life CycleVelocity 2012: The 90-Minute Mobile Optimization Life Cycle
Velocity 2012: The 90-Minute Mobile Optimization Life CycleStrangeloop
 
Responsive Images and Performance
Responsive Images and PerformanceResponsive Images and Performance
Responsive Images and PerformanceMaximiliano Firtman
 
Velocity 2012 - Taming the Mobile Beast
Velocity 2012 - Taming the Mobile BeastVelocity 2012 - Taming the Mobile Beast
Velocity 2012 - Taming the Mobile BeastPatrick Meenan
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Maximiliano Firtman
 
Imagesandvideo stockholm fastandbeautiful
Imagesandvideo stockholm fastandbeautifulImagesandvideo stockholm fastandbeautiful
Imagesandvideo stockholm fastandbeautifulDoug Sillars
 
Imagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetupImagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetupDoug Sillars
 
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conferenceVaadin intro at GWT.create conference
Vaadin intro at GWT.create conferenceJoonas Lehtinen
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoMaximiliano Firtman
 
Mot cph when its just too slow
Mot cph when its just too slowMot cph when its just too slow
Mot cph when its just too slowDoug Sillars
 
Measuring web performance
Measuring web performanceMeasuring web performance
Measuring web performancePatrick Meenan
 

What's hot (20)

The Physical World meets the Web
The Physical World meets the WebThe Physical World meets the Web
The Physical World meets the Web
 
Its timetostopstalling cambridgemot
Its timetostopstalling cambridgemotIts timetostopstalling cambridgemot
Its timetostopstalling cambridgemot
 
Its timetostopstalling swp_munich
Its timetostopstalling swp_munichIts timetostopstalling swp_munich
Its timetostopstalling swp_munich
 
Its timetostopstalling limerick
Its timetostopstalling limerickIts timetostopstalling limerick
Its timetostopstalling limerick
 
Vkmdp cologne
Vkmdp cologneVkmdp cologne
Vkmdp cologne
 
Rebooting a Cloud
Rebooting a CloudRebooting a Cloud
Rebooting a Cloud
 
Forensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsForensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance Investigations
 
Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015Extreme Web Performance for Mobile Device Fluent 2015
Extreme Web Performance for Mobile Device Fluent 2015
 
Its timetostopstalling londroid
Its timetostopstalling londroidIts timetostopstalling londroid
Its timetostopstalling londroid
 
Mobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOTMobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOT
 
Velocity 2012: The 90-Minute Mobile Optimization Life Cycle
Velocity 2012: The 90-Minute Mobile Optimization Life CycleVelocity 2012: The 90-Minute Mobile Optimization Life Cycle
Velocity 2012: The 90-Minute Mobile Optimization Life Cycle
 
Responsive Images and Performance
Responsive Images and PerformanceResponsive Images and Performance
Responsive Images and Performance
 
Velocity 2012 - Taming the Mobile Beast
Velocity 2012 - Taming the Mobile BeastVelocity 2012 - Taming the Mobile Beast
Velocity 2012 - Taming the Mobile Beast
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 
Imagesandvideo stockholm fastandbeautiful
Imagesandvideo stockholm fastandbeautifulImagesandvideo stockholm fastandbeautiful
Imagesandvideo stockholm fastandbeautiful
 
Imagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetupImagesandvideo stockholm webmeetup
Imagesandvideo stockholm webmeetup
 
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conferenceVaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack Toronto
 
Mot cph when its just too slow
Mot cph when its just too slowMot cph when its just too slow
Mot cph when its just too slow
 
Measuring web performance
Measuring web performanceMeasuring web performance
Measuring web performance
 

Viewers also liked

Misha Beshkin - Development, promotion and earning on Android project. Exampl...
Misha Beshkin - Development, promotion and earning on Android project. Exampl...Misha Beshkin - Development, promotion and earning on Android project. Exampl...
Misha Beshkin - Development, promotion and earning on Android project. Exampl...DevConFu
 
Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...DevConFu
 
Jina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesJina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesDevConFu
 
Shay Friedman - The Wonderful World That Is Twitter Bootstrap
Shay Friedman - The Wonderful World That Is Twitter BootstrapShay Friedman - The Wonderful World That Is Twitter Bootstrap
Shay Friedman - The Wonderful World That Is Twitter BootstrapDevConFu
 
Allan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionAllan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionDevConFu
 
Kaspars Petersons - BYOD - more like BYOP
Kaspars Petersons -  BYOD - more like BYOPKaspars Petersons -  BYOD - more like BYOP
Kaspars Petersons - BYOD - more like BYOPDevConFu
 
Bullying ppt
Bullying pptBullying ppt
Bullying pptpamay1
 
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuAndrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuDevConFu
 
Домик на дереве
Домик на деревеДомик на дереве
Домик на деревеigor_job
 
How to start your own Watkins Business
How to start your own Watkins BusinessHow to start your own Watkins Business
How to start your own Watkins BusinessTina
 

Viewers also liked (11)

Misha Beshkin - Development, promotion and earning on Android project. Exampl...
Misha Beshkin - Development, promotion and earning on Android project. Exampl...Misha Beshkin - Development, promotion and earning on Android project. Exampl...
Misha Beshkin - Development, promotion and earning on Android project. Exampl...
 
Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...Didzis Balodis - Web application security – war stories from real penetration...
Didzis Balodis - Web application security – war stories from real penetration...
 
Jina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web InterfacesJina bolton - Refactoring Web Interfaces
Jina bolton - Refactoring Web Interfaces
 
Shay Friedman - The Wonderful World That Is Twitter Bootstrap
Shay Friedman - The Wonderful World That Is Twitter BootstrapShay Friedman - The Wonderful World That Is Twitter Bootstrap
Shay Friedman - The Wonderful World That Is Twitter Bootstrap
 
Allan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussionAllan Kelly - Dialogue Sheets for retrospectives and discussion
Allan Kelly - Dialogue Sheets for retrospectives and discussion
 
Kaspars Petersons - BYOD - more like BYOP
Kaspars Petersons -  BYOD - more like BYOPKaspars Petersons -  BYOD - more like BYOP
Kaspars Petersons - BYOD - more like BYOP
 
Bullying ppt
Bullying pptBullying ppt
Bullying ppt
 
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFuAndrey Adamovich - Enterprise flight into DevOps space - ConFu
Andrey Adamovich - Enterprise flight into DevOps space - ConFu
 
Домик на дереве
Домик на деревеДомик на дереве
Домик на дереве
 
18
1818
18
 
How to start your own Watkins Business
How to start your own Watkins BusinessHow to start your own Watkins Business
How to start your own Watkins Business
 

Similar to Jon Arne Sæterås - Give Responsive Design a mobile performance boost

Velocity EU: Give Responsive Design a Mobile Performance Boost
Velocity EU: Give Responsive Design a Mobile Performance BoostVelocity EU: Give Responsive Design a Mobile Performance Boost
Velocity EU: Give Responsive Design a Mobile Performance BoostJon Arne Sæterås
 
Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Jon Arne Sæterås
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedpgt technology scouting GmbH
 
Azure Functions - Get rid of your servers, use functions!
Azure Functions - Get rid of your servers, use functions!Azure Functions - Get rid of your servers, use functions!
Azure Functions - Get rid of your servers, use functions!QAware GmbH
 
Magento performancenbs
Magento performancenbsMagento performancenbs
Magento performancenbsvarien
 
Creating an Effective Mobile API
Creating an Effective Mobile API Creating an Effective Mobile API
Creating an Effective Mobile API Nick DeNardis
 
WebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerWebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerElixir Club
 
Web Performance & Latest in React
Web Performance & Latest in ReactWeb Performance & Latest in React
Web Performance & Latest in ReactTalentica Software
 
NU Web Steering Committee - Oct 11 - Web Performance
NU Web Steering Committee - Oct 11 - Web PerformanceNU Web Steering Committee - Oct 11 - Web Performance
NU Web Steering Committee - Oct 11 - Web PerformanceLee Roberson
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and moreYan Shi
 
Web app and more
Web app and moreWeb app and more
Web app and morefaming su
 
Big Data And HTML5 (DevCon TLV 2012)
Big Data And HTML5 (DevCon TLV 2012)Big Data And HTML5 (DevCon TLV 2012)
Big Data And HTML5 (DevCon TLV 2012)Ido Green
 
Vaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionVaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionJoonas Lehtinen
 
E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overviewNuno Alves
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuningJohn McCaffrey
 
Offline capable web applications with Google Gears and Dojo Offline
Offline capable web applications with Google Gears and Dojo OfflineOffline capable web applications with Google Gears and Dojo Offline
Offline capable web applications with Google Gears and Dojo Offlineguestcb5c22
 
Web Performance Internals explained for Developers and other stake holders.
Web Performance Internals explained for Developers and other stake holders.Web Performance Internals explained for Developers and other stake holders.
Web Performance Internals explained for Developers and other stake holders.Sreejesh Madonandy
 

Similar to Jon Arne Sæterås - Give Responsive Design a mobile performance boost (20)

Velocity EU: Give Responsive Design a Mobile Performance Boost
Velocity EU: Give Responsive Design a Mobile Performance BoostVelocity EU: Give Responsive Design a Mobile Performance Boost
Velocity EU: Give Responsive Design a Mobile Performance Boost
 
Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learned
 
GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)GWT Architectures and Lessons Learned (WJAX 2013)
GWT Architectures and Lessons Learned (WJAX 2013)
 
Azure Functions - Get rid of your servers, use functions!
Azure Functions - Get rid of your servers, use functions!Azure Functions - Get rid of your servers, use functions!
Azure Functions - Get rid of your servers, use functions!
 
Magento performancenbs
Magento performancenbsMagento performancenbs
Magento performancenbs
 
Creating an Effective Mobile API
Creating an Effective Mobile API Creating an Effective Mobile API
Creating an Effective Mobile API
 
WebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan WintermeyerWebPerformance: Why and How? – Stefan Wintermeyer
WebPerformance: Why and How? – Stefan Wintermeyer
 
Web Performance & Latest in React
Web Performance & Latest in ReactWeb Performance & Latest in React
Web Performance & Latest in React
 
NU Web Steering Committee - Oct 11 - Web Performance
NU Web Steering Committee - Oct 11 - Web PerformanceNU Web Steering Committee - Oct 11 - Web Performance
NU Web Steering Committee - Oct 11 - Web Performance
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
Big Data And HTML5 (DevCon TLV 2012)
Big Data And HTML5 (DevCon TLV 2012)Big Data And HTML5 (DevCon TLV 2012)
Big Data And HTML5 (DevCon TLV 2012)
 
Web assembly with PWA
Web assembly with PWA Web assembly with PWA
Web assembly with PWA
 
Vaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 editionVaadin Introduction, 7.3 edition
Vaadin Introduction, 7.3 edition
 
E g innovations overview
E g innovations overviewE g innovations overview
E g innovations overview
 
Yatoto-technical
Yatoto-technicalYatoto-technical
Yatoto-technical
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuning
 
Offline capable web applications with Google Gears and Dojo Offline
Offline capable web applications with Google Gears and Dojo OfflineOffline capable web applications with Google Gears and Dojo Offline
Offline capable web applications with Google Gears and Dojo Offline
 
Web Performance Internals explained for Developers and other stake holders.
Web Performance Internals explained for Developers and other stake holders.Web Performance Internals explained for Developers and other stake holders.
Web Performance Internals explained for Developers and other stake holders.
 

More from DevConFu

Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...DevConFu
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...DevConFu
 
Gojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuGojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuDevConFu
 
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuVasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuDevConFu
 
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuHanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuDevConFu
 
Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth DevConFu
 
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingHanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingDevConFu
 
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)DevConFu
 
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DRobin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DDevConFu
 
Marion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsMarion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsDevConFu
 
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneRobert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneDevConFu
 
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture DevConFu
 
Misha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesMisha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesDevConFu
 
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudAndrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudDevConFu
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsDevConFu
 
Allan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingAllan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingDevConFu
 
Filipp Keks - Unity3D
Filipp Keks - Unity3DFilipp Keks - Unity3D
Filipp Keks - Unity3DDevConFu
 
Azure migration
Azure migrationAzure migration
Azure migrationDevConFu
 
Shay Friedman - What?!? C# Could Do That?!?
Shay Friedman - What?!? C# Could Do That?!?Shay Friedman - What?!? C# Could Do That?!?
Shay Friedman - What?!? C# Could Do That?!?DevConFu
 
Valdis Iljuconoks - Loving data with F#
Valdis Iljuconoks -  Loving data with F#Valdis Iljuconoks -  Loving data with F#
Valdis Iljuconoks - Loving data with F#DevConFu
 

More from DevConFu (20)

Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
Hanno Jarvet - Agile is a bad strategy or 5 things every Agile practitioner s...
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Gojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFuGojko Adzic - Taking the business on the journey - ConFu
Gojko Adzic - Taking the business on the journey - ConFu
 
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFuVasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
Vasco Duarte - Agile Innovation - Product Management in turbulent times - ConFu
 
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFuHanno Jarvet - VSM, Planning and Problem Solving - ConFu
Hanno Jarvet - VSM, Planning and Problem Solving - ConFu
 
Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth Jina Bolton - in the search of the single source of truth
Jina Bolton - in the search of the single source of truth
 
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem SolvingHanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
Hanno Jarvet - The Lean Toolkit – Value Stream Mapping and Problem Solving
 
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)Ivan Gaydamakin and Juri Tishko -  ​3D Printing (workshop)
Ivan Gaydamakin and Juri Tishko - ​3D Printing (workshop)
 
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3DRobin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
Robin Hawkes - Using OpenStreetMap and WebGL to create real-world cities in 3D
 
Marion de Groot - Scrum and Specs
Marion de Groot - Scrum and SpecsMarion de Groot - Scrum and Specs
Marion de Groot - Scrum and Specs
 
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile PhoneRobert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
Robert Virkus - Playing with LEGO Mindstorms from your Mobile Phone
 
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture
 
Misha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devicesMisha Beshkin - How to organize execution of tests on real Android devices
Misha Beshkin - How to organize execution of tests on real Android devices
 
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloudAndrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
Andrey Adamovich and Luciano Fiandesio - Groovy dev ops in the cloud
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
 
Allan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thingAllan Kelly - Do it right, then do the right thing
Allan Kelly - Do it right, then do the right thing
 
Filipp Keks - Unity3D
Filipp Keks - Unity3DFilipp Keks - Unity3D
Filipp Keks - Unity3D
 
Azure migration
Azure migrationAzure migration
Azure migration
 
Shay Friedman - What?!? C# Could Do That?!?
Shay Friedman - What?!? C# Could Do That?!?Shay Friedman - What?!? C# Could Do That?!?
Shay Friedman - What?!? C# Could Do That?!?
 
Valdis Iljuconoks - Loving data with F#
Valdis Iljuconoks -  Loving data with F#Valdis Iljuconoks -  Loving data with F#
Valdis Iljuconoks - Loving data with F#
 

Recently uploaded

Mobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsMobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsChandrakantDivate1
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfCWS Technology
 
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...nishasame66
 
Mobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsMobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsChandrakantDivate1
 
Android Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesAndroid Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesChandrakantDivate1
 

Recently uploaded (6)

Mobile Application Development-Components and Layouts
Mobile Application Development-Components and LayoutsMobile Application Development-Components and Layouts
Mobile Application Development-Components and Layouts
 
Leading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdfLeading Mobile App Development Companies in India (2).pdf
Leading Mobile App Development Companies in India (2).pdf
 
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...
Satara Call girl escort *74796//13122* Call me punam call girls 24*7hour avai...
 
Mobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s ToolsMobile Application Development-Android and It’s Tools
Mobile Application Development-Android and It’s Tools
 
Android Application Components with Implementation & Examples
Android Application Components with Implementation & ExamplesAndroid Application Components with Implementation & Examples
Android Application Components with Implementation & Examples
 
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
Obat Penggugur Kandungan Di Apotik Kimia Farma (087776558899)
 

Jon Arne Sæterås - Give Responsive Design a mobile performance boost

  • 1.
  • 2. August 18, 2010 YEP, WEB ON MOBILE IS SLOW
  • 3. 100 ms faster: 1% increased revenue 1 sec delay: 2.8% drop in revenue http://www.slideshare.net/stubbornella/designing-fast-websites-presentation http://slideshare.net/markstanton/speed-matters SLOW IS NOT COOL ...even less cool on mobile For Q3 2013 that is $17mill.
  • 4. THE VALUE CHAIN developer server internet telco  network device Doesn’t really make things more difficult, but reveal a few issues browser
  • 5. WHY IS MOBILE SLOWER? • Network Latency • Available Bandwidth • The Implementation • Processing Power • Browser • Battery Preserving Strategies • Memory
  • 6. FUN-FACT Loading apple.com consume 1.41% of battery life.
 http://www2012.wwwconference.org/proceedings/proceedings/p41.pdf Not so 12 - 4% in 8 mins of web surfing
  • 7. “4G” BANDWIDTH Mbps 0 12,5 25 37,5 50 Location 1Location 1Location 2Location 3Location 4Location 5Location 6Location 7Location 8Location 9Location 9Location 9Location 10Location 11Location 12Location 12Location 13Location 13Location 14Location 15Location 16Location 17 15,18 18,69 18,17 6,18 14,99 13,17 19,65 19,71 19,96 19,07 8,86 2,77 0,15 1,47 18,85 9,16 19,65 20,16 16,5 20,04 9,59 0,1 36,33 36,39 24,76 0,36 9,15 42,49 30,55 38,79 24,01 7,86 11,78 0 0 21,5 44,09 10,49 10,61 12,34 16,29 2,53 13,57 1,29 Netcom Telenor VG 10.11.2013
  • 8. CURRENT STATE OF THE WEB AND MOBILE
  • 9. 1.8 MB 3 %7 % 4 % 3 % 17 % 65 % Images Scripts CSS Flash Other HTML in 95 requests on average http://httparchive.org/
  • 10. 1.8 MB in 95 requests on average • Avg. speed: 2Mbps (cisco) • 1 Mbps = 0.12 MB/s • 1.8 / 0.24 = 7,5s 7,5Seconds download time http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/ns827/white_paper_c11-520862.html
  • 11. 1.8 MB in 95 requests on average •100-200 ms pr roundtrip •Depends....(DNS, pipelining, concurrentTCP connections etc.) 9,5Seconds latency in total
  • 12. LATENCY 3g 4g Control plane 200–2,500 ms 50–100 ms DNS lookup 200 ms 100 ms TCP handshake 200 ms 100 ms TLS handshake 200–400 ms 100–200 ms HTTP request 200 ms 100 ms Total latency overhead 200–3500 ms 100–600 ms O’Reilly: High Performance Browser Networking
  • 14. .01 s. User opens app. Wakes the radio. Device sends a request to the cell tower to use the network Tower signaling. Device promoted to full power state. Process takes about 2 seconds 2.1 s. Only needed when device is idle App is “on line” App does a DNS lookup. Roundtrip is 100-200 ms. 2.2 s.
  • 15. Latency, anything from 100 - >500ms TCP connection HTML document returned 2.4 s. 2.4 s, the HTML page is downloaded Browser rendering Fetches linked resources. More DNS lookups (one for each unique domain) and TCP connections. 2.6 s. Page displayed Puh... 3-60 s. http://www.research.att.com/articles/featured_stories/2011_03/201102_Energy_efficient?fbid=YmB5ErqPR7b
  • 16. 1.8 MB in 95 requests on average •Wake up radio (one time) •TCP and DNS (one time) •95 round trips (6 req pr conn.) •Downloading 1.8 mb over 2Mbps 11,2Seconds total + rendering time in the browser + server response time Disclaimer: lots of assumptions in this calculation!
  • 17. GOOGLE: 7.5 S. *at the time, the average web site was 1,2MB. Minus the 2s wakeup, we’re in the ballpark.
  • 18. DEVCONFU.EU • Load event fired: 32 s. • 2.3 MB • 180 requests iPhone 4 iOS 5.1 on 3G (latency 300ms)
  • 19. SERVE A PAGE TO A MOBILE DEVICE IN LESS THAN 1 SECOND? A great overview by Ilya Grigorik bit.ly/mobile-barrier
  • 20. WHO CARES? The users care! Telco Network 53,53 % Other 46,47 % How users connect. Page views per connection type. (Scandinavian Countries). Source: Mobiletech
  • 22. SO, WHAT IS OUR CURRENT APPROACH TO THIS?
  • 24. RESPONSIVE WEB DESIGN Doh... Much smaller 6 % Same size 72 % Smaller 22 % http://www.guypo.com/uncategorized/real-world-rwd-performance-take-2/ Also about the same number of HTTP requests
  • 25. RWD IS A TECHNIQUE Nothing wrong with the technique! It is brilliant! The famous Iceberg: @brad_frost
  • 26. RWD != MOBILE FRIENDLY but an important step in the right direction
  • 27. Load time: 9.07s * Size: 288.14 kb Load time: 2.36 s * Size: 36.59 kb *) Load event fired. - More on how the built the new BBC News site: http://slidesha.re/14IYNOO
  • 29. PRIMARY ISSUES • Over downloading • Unused assets • Large images • Stuff... ! • Network issues • High Latency • Bandwidth • Flaky connection ! • Processing power • Slower CPU • Memory • Cache limits
  • 31. PARET0 PRINCIPLE Responsive Design is 20% of the work, and might get you 80% on the way the “80/20 rule”
  • 32. THE LAST 20% will improve performance by 80% Our example: increasing performance by 80% gives a load time of 2,2s
  • 33. SOMETIMES IT MAKES SENSE TO MULTI-SERVE ...or at least do layoutadjustments to components
  • 34. When all you have is a hammer, every problem looks like a nail RWD device or browser
  • 35. HOW CAN WE FIX THIS? What can we do to help front end developers make use of server side stuff?
  • 36. THE VALUE CHAIN Adaptive Responsive developer server internet telco  network device browser
  • 37. RANT There is a web server.A very capable one, too. Use it!
  • 38. SERVER? How to make the server side available to front end devs
  • 40. RESS REsponsive design with Server Side components
  • 41. A BALANCING ACT no right answer
  • 42. PURPOSE OF RESS • Reduce need for client side processing • Eliminate “over downloading” • Let the server do the work instead of the browser
  • 43. RESS IN A NUT SHELL •RWD provide a sensible default or fallback •The server does the optimization Reduce asset size Selective markup Ad serving Social networks Minify zip Cache etc.
  • 44. INGREDIENTS OF RESS Hello, I know exactly how to make you shine! Information about the requesting device, network, etc. Request/Response
  • 45. NOT A CRIME! 82% of top 100 Alexa sites use Device Detection In the case of Mashable, we also detect the type of device and change the site’s behavior accordingly. “ ” http://www.circleid.com/posts/20120111_analysis_of_server_side_mobile_web_detection/ http://mashable.com/2012/12/11/responsive-web-design/
  • 46. THERE IS A DIFFERENCE User-Agent sniffing var  isIpad  =  /iPad/i.test(navigator.userAgent); Feature Detection var  appCache=  function()  {      return  !!window.applicationCache;   }; Device Detection Using the User-Agent (++) as a key to look up in a data base. http://www.otsukare.info/2013/10/02/ua-parsing
  • 47. NYTIMES ! var ua = navigator.userAgent;! window.BBDevice = {! isOldBB: false,! indexOfVersion: ua.indexOf("Version/"),! indexOfBB: ua.indexOf("BlackBerry"),! fullVersion: null,! version: null! };! if (window.BBDevice.indexOfBB >= 0) {! existingClasses = document.body.className = existingClasses + " bb";! if (ua.indexOf("WebKit") < 0) {! existingClasses = document.body.className = existingClasses + " oldbb";! window.BBDevice.isOldBB = true;! window.BBDevice.fullVersion = ua.substr(window.BBDevice.indexOfBB);! window.BBDevice.fullVersion = window.BBDevice.fullVersion.substr(window.BBDevice.fullVersion.indexOf("/") + 1, window.BBDevice.fullVersion.indexOf(" "));! window.BBDevice.version = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf("."));! } else {! if (window.BBDevice.indexOfVersion >= 0) {! window.BBDevice.indexOfVersion = window.BBDevice.indexOfVersion + 8;! window.BBDevice.fullVersion = ua.substr(window.BBDevice.indexOfVersion);! window.BBDevice.fullVersion = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf(" "));! window.BBDevice.version = window.BBDevice.fullVersion.substr(0, window.BBDevice.fullVersion.indexOf("."));! }! }! } else if (ua.indexOf("MSIE 9.0") >= 0 || ua.indexOf("IEMobile/9.0") >= 0) {! existingClasses = document.body.className = existingClasses + " win75";! window.WMDevice = true;! } else if (ua.indexOf("MSIE 10.0") >= 0 || ua.indexOf("IEMobile/10.0") >= 0) {! window.WMDevice = true;! } else if (ua.indexOf("Opera Mini") >= 0) {! window.OperaMiniDevice = true;! } http://mpulp.mobi/2013/05/user-agent-sniffing-on-the-new-nyt-mobile-site/ http://mobile.nytimes.com
  • 48. FEATURES OF A DDR • Nice place to store custom stuff • “Business rules” • Specifics to your site • Override feature detected features • If a feature works, but not well enough to make it useable • False positives (not a HUGE issue, but still) • Available server side too • Adapt and optimize stuff before sending to client Device Description Repository
  • 49. EXAMPLE if  ($type_of_device  ==  ”smartTV”)   include(TVnav.php);   else   include(nav.php);  
  • 50. EXAMPLE if  ($supports_h264)   echo  ‘<video  .../>’;   else   echo  ‘<a  href=”...”>Download</a>’;  
  • 51. WHAT WE ENDED UP WITH
  • 52. DEVICE DETECTION RESTful API GET  http://ddr.demo.wew.io/c/pointing_method Response {“pointing_method":"touchscreen"}    
  • 53. EXAMPLE var  http  =  new  XMLHttpRequest();   http.open("GET",  "http://ddr.demo.wew.io/c/brand_name",  true);   http.onreadystatechange  =  function()  {   if  (http.readyState  ==  4)   console.log(http.responseText);   }   http.send();
  • 54. EXAMPLE public  function  get($capa){     foreach(getallheaders()  as  $key  =>  $value)  {       if  ($key  !="Host")            $this-­‐>headers[]  =  $key  .  ':  '  .  $value;     }     $url  =  $this-­‐>service  .  $capa;     $curl  =  curl_init($url);     curl_setopt($curl,  CURLOPT_RETURNTRANSFER,  true);     curl_setopt($curl,  CURLOPT_HTTPHEADER,  $this-­‐>headers);         $this-­‐>response  =  curl_exec($curl);     curl_close($curl);     return  json_decode($this-­‐>response)-­‐>$capa;   }
  • 55. IMAGE OPTIMIZING <img  src="http://img.demo.wew.io/http://example.com/image.jpg"/> Simple Usage Advanced Usage <img  src=”http://img.demo.wew.io/vpw_1024/bp_w/pc/w_31/m_48/n_98/http:// example.com/img.png”/>
  • 56. EXAMPLE <div  data-­‐picture  data-­‐alt="A  beautiful  butterfly">     <div  data-­‐src="http://img.demo.wew.io/px_100/http://exampe.com/image.png"></div>     <div  data-­‐src="http://img.demo.wew.io/px_320/http://exampe.com/image.png"     data-­‐media="(min-­‐width:  320px)"></div>     <div  data-­‐src="http://img.demo.wew.io/px_320/@_2/http://exampe.com/image.png"     data-­‐media="(min-­‐width:  320px)  and  (-­‐webkit-­‐min-­‐device-­‐pixel-­‐ratio:  2.0)"></div>   !   <noscript>            <img  src="http://img.demo.wew.io/px_10/http://exampe.com/image.png">     </noscript>   </div> Picturefill: https://github.com/scottjehl/picturefill. Using Picturefill
  • 57. CSS OPTIMIZATION Device Capabilities as Media Features Removing overhead and excess styles @media  (-­‐wew-­‐pointing-­‐method:  touchscreen){                                a  {       padding:  10px;   }               } @media  all  and  (min-­‐width:  1500px){       //removed  for  devices  where  1500px  is  impossible.  e.g.  iPhones                    body{color:  green;}                   } Server Side rendering
  • 58. EXAMPLE <!doctype  html>   <html>   <head>   !    <link  rel="stylesheet"  href="//css.demo.wew.io/http://example.com/style.css”/>   ! </head>   <body>   !  <img  src="http://img.demo.wew.io/http://example.com/image.jpg"/>   ! <script>    var  w=new  wew();    w.getSet("myset",cb);   </script>   ! </body>   </html>   •Markup lives anywhere •CSS and images are proxied, optimized and cached •Device data available client side
  • 59. FTW? Does adaptive design have a positive impact on performance?
  • 60. EFFECT 0 108 215 323 430 Size No RESS With RESS 0 950 1 900 2 850 3 800 Time 0 575 1 150 1 725 2 300 Latency 20% less data 50% faster download 73% reduced latency
  • 62. CAN’T DO MAGIC 0 975 1 950 2 925 3 900 Onload no WeW with RESS Only 4% faster in total Due to lazy loading of assets and repaints etc. Lazy loading good or bad? Depends...
  • 63. FUN-FACT Loading apple.com consume 1.41% of battery life.
 http://www2012.wwwconference.org/proceedings/proceedings/p41.pdf Not so 12 - 4% in 8 mins of web surfing
  • 64. MARSHALLHEADPHONES.COM • Down from 1.6MB to 432KB • Load time down from 6,1s to 1,9s
  • 66. PERFORMANCE FRONT END STARTS WITH THE BACK END Too much is left to the browser to figure out.
  • 67. THE RULES 1. Make Fewer HTTP Requests 2. Use a Content Delivery Network 3. Add an Expires Header 4. Gzip Components 5. Put Stylesheets at theTop 6. Put Scripts at the Bottom 7. Avoid CSS Expressions 8. Make JavaScript and CSS External 9. Reduce DNS Lookups 10. Minify JavaScript 11. Avoid Redirects 12. Remove Duplicate Scripts 13. Configure ETags 14. Make AJAX Cacheable By Steve Souders: http://stevesouders.com/hpws/rules.php Most of these are implemented server side.
  • 68. SUMMING UP developer server internet telco  network device browser We... ...must do stuff here... ...to relieve... ...and... ...to make life easier for... ...and...
  • 69. THANK YOU John Arne Sæterås Twitter: @jonarnes VP of innovation at ScientiaMobile.com http://www.slideshare.net/jonarnes/