123
#webexpo Embracing performance in today’s multi-platform macrocosm Ahoj Prague

WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

Embed Size (px)

DESCRIPTION

See more under: http://webexpo.net/prague2013/talk/embracing-performance-in-todays-multi-platform-macrocosm/

Citation preview

Page 1: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Embracing performance in today’s multi-platform macrocosm

Ahoj Prague

Page 2: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

BARBARA BERMES

Senior Architect (Moblie Web)Digital OperationsCanadian Broadcasting Corporation

bbinto

Page 3: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1998 1989

Page 4: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1989

Page 5: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1998

Page 6: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

201

3

Page 7: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

CANADA!

Page 8: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

/beebs/

Page 9: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Page 10: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Canadian Broadcasting Corporation

/ceeebs/

Page 11: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Embracing performance in today’s multi-platform macrocosm

Page 12: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

PERFORMANCEWHY IS THERE A NEED FOR

SPEED?

Page 13: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Page 14: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Houston’s airport: customer complaints

More����������� ������������������  info����������� ������������������  under����������� ������������������  follow-up����������� ������������������  blog����������� ������������������  post����������� ������������������  (URL����������� ������������������  at����������� ������������������  end����������� ������������������  of����������� ������������������  slides)

Page 15: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Houston’s airport: customer complaints

It takes so long....grrrrr

More����������� ������������������  info����������� ������������������  under����������� ������������������  follow-up����������� ������������������  blog����������� ������������������  post����������� ������������������  (URL����������� ������������������  at����������� ������������������  end����������� ������������������  of����������� ������������������  slides)

Page 16: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Houston’s airport: customer complaints

It takes so long....grrrrr

6x 6x

More����������� ������������������  info����������� ������������������  under����������� ������������������  follow-up����������� ������������������  blog����������� ������������������  post����������� ������������������  (URL����������� ������������������  at����������� ������������������  end����������� ������������������  of����������� ������������������  slides)

Page 17: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Houston’s airport: customer complaints

It takes so long....grrrrr

6x

All good, bla bla...

6x

More����������� ������������������  info����������� ������������������  under����������� ������������������  follow-up����������� ������������������  blog����������� ������������������  post����������� ������������������  (URL����������� ������������������  at����������� ������������������  end����������� ������������������  of����������� ������������������  slides)

Page 18: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Overestimating wait times for rides

Hidden lineups

Page 19: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

FAST

Page 20: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

FAST

Page 21: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

Unknown

FAST

Page 22: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

Unknown

Boring

FAST

Page 23: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

Unknown

Boring

Task is successful

FAST

Page 24: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

Unknown

Boring

Task is successful

Responsive system

FAST

Page 25: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

S L O W

Perception of Speed

Unpleasant

Unknown

Boring

Task is successful

Responsive system

FAST

Informed about progress

Page 26: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

“Ultimately performance is about respect”

BRAD FROST

Page 27: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Embracing performance in today’s multi-platform macrocosm

Page 28: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm#webexpo

Page 29: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

#webexpo

Page 30: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

Browsers

#webexpo

Page 31: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

Browsers

Internet service providers

#webexpo

Page 32: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

Browsers

Internet service providers

Cellular providers

#webexpo

Page 33: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

Browsers

Internet service providers

Cellular providersInternet connections

and speed

#webexpo

Page 34: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Macrocosm

Operating systems and platforms

Browsers

Internet service providers

Cellular providersInternet connections

and speed

Devices

#webexpo

Page 35: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

We are multi-screeners in amulti-platform macrocosm where context drives our device choice

Page 36: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

CBC’s MOBILE REALITYAND JOURNEY

Page 37: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

FACTS & WISHLIST

• Maintenance of several different code bases

• Slow iOS news app

• Device and OS fragmentation

• Every content area wants to build their own app

• News broadcaster: Be able to push new features to apps as soon as possible (without review process)

Page 38: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• Maintenance of several different code bases

• Slow iOS news app

• Device and OS fragmentation

• Every content area wants to build their own app

• News broadcaster: Be able to push new features to apps as soon as possible (without review process)

Faster����������� ������������������  load����������� ������������������  time

More����������� ������������������  frequent����������� ������������������  releases

Many����������� ������������������  apps����������� ������������������  with����������� ������������������  

limited����������� ������������������  budget

FACTS & WISHLIST

Page 39: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Foster the idea ofbuild once publish to many

Many����������� ������������������  apps����������� ������������������  with����������� ������������������  limited����������� ������������������  budget

Page 40: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HOW?

Page 41: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 vs. Native(Not again....!)

It depends...

Page 42: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 vs. Native

“Comparing an HTML5 application’s performance with a native app is comparing a tailored suit with one bought in a shop”

Chris Heilmann

Page 43: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 + NATIVE = HYBRID

Page 44: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 + NATIVE = HYBRIDMarriage of web technology and native execution

Page 45: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 + NATIVE = HYBRIDMarriage of web technology and native execution

Downloadable app, stored on the device

Page 46: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HTML5 + NATIVE = HYBRIDMarriage of web technology and native execution

Downloadable app, stored on the device

Runs all or some of its user interface in an embedded browser component

Page 47: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEBSITE

WITH NATIVE WRAPPER

GOAL

More����������� ������������������  frequent����������� ������������������  releases

Page 48: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

BEFORE THE HYBRID JOURNEY BEGINS

Page 49: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

SET EXPECTATIONS AND RULES

Page 50: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

RULES OF THUMB

NATIVE AS A PROGRESSIVEENHANCEMENT STRATEGY

Page 51: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

RULES OF THUMB

Page 52: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

RULES OF THUMB

Page 53: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

2. Admit web is not native

RULES OF THUMB

Page 54: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

2. Admit web is not native

3. Learn from others

RULES OF THUMB

Page 55: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

2. Admit web is not native

3. Learn from others

4. Follow native design guidelines

RULES OF THUMB

Page 56: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

2. Admit web is not native

3. Learn from others

4. Follow native design guidelines

5. Define a set of supported devices

RULES OF THUMB

Page 57: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

1. Perfect Ratio between web and native

2. Admit web is not native

3. Learn from others

4. Follow native design guidelines

5. Define a set of supported devices

6. Focus on and setup performance budgets

RULES OF THUMB

Page 58: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WITH NATIVE WRAPPERWEBSITE

GOAL

Page 59: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

FOCUS ON MAKING (MOBILE) WEB FASTWITH NATIVE WRAPPER

GOAL

Faster����������� ������������������  load����������� ������������������  time

Page 60: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

PERFORMANCE ON MOBILE

Page 61: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Battery-driven

PERFORMANCE ON MOBILE

Page 62: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Battery-driven Small CPU/GPU

PERFORMANCE ON MOBILE

Page 63: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Battery-driven Small CPU/GPU

Network connectivity and latency

PERFORMANCE ON MOBILE

Page 64: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Battery-driven Small CPU/GPU

Network connectivity and latency

Data usage

PERFORMANCE ON MOBILE

Page 65: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

DON’T MAKE THE USER PAY FOR BAD PERFORMANCE

Page 66: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

REDUCE HTTP REQUESTS

Page 67: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

EACH HTTP REQUEST COSTS AROUND 200MS

Page 68: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• Reduce HTTP requests

• Avoid latency issues as much as possible

• Only load what is needed

CONCEPT

Page 69: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TECHNIQUES

Page 70: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

CONCATENATE AND MINIFY ASSETS

HTTP REQUESTS TECHNIQUES

Page 71: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

MAKE USE OF DATA URI FOR IMAGES

HTTP REQUESTS TECHNIQUES

Page 72: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

USE ASYNCHRONOUS MODULE DEFINITION (AMD)

HTTP REQUESTS TECHNIQUES

Page 73: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

SINGLE PAGE APPRELOAD ONLY PIECES OF PAGE

HTTP REQUESTS TECHNIQUES

Page 74: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

FOCUS ON MAKING (MOBILE) WEB FAST

WITH NATIVE WRAPPER

GOAL

Page 75: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

FAST SINGLE PAGE APP

WITH NATIVE WRAPPER

GOAL

Page 76: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HYBRID ARCHITECTURE

In����������� ������������������  Development

Page 77: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Native Layer (Java, Objective C, ...)

Hybrid Layer (communication between native and web)

Web Layer (HTML5, CSS, JS, MVC frameworks, custom libraries)

Backend LayerServer, CDN (ESI, SSI, Java, Apache, CGI, Perl, PHP)

Page 78: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Native Layer (Java, Objective C, ...)

Hybrid Layer (communication between native and web)

Web Layer (HTML5, CSS, JS, MVC frameworks, custom libraries)

Backend LayerServer, CDN (ESI, SSI, Java, Apache, CGI, Perl, PHP)

Fo

cus

on

Pe

rfo

rma

nce

Fo

cus o

n P

erfo

rma

nce

Page 79: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• JSON feeds (content source and configuration)

• Using content delivery network (CDN)

• Edge Side Include & SSI (device, native/web detection)

• PHP (server-side ads implementation)

BACKEND LAYER

Page 80: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Native Layer (Java, Objective C, ...)

Hybrid Layer (communication between native and web)

Web Layer (HTML5, CSS, JS, MVC frameworks, custom libraries)

Backend LayerServer, CDN (ESI, SSI, Java, Apache, CGI, Perl, PHP)

Fo

cus

on

Pe

rfo

rma

nce

Fo

cus o

n P

erfo

rma

nce

Page 81: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

Page 82: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

Page 83: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

can.JS(MVC)

Page 84: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

can.JS(MVC)

Modernizr (AMD)

Page 85: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

can.JS(MVC)

Modernizr (AMD)

CBC libscomtower

Page 86: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

can.JS(MVC)

Modernizr (AMD)

CBC libscomtower

Other libse.g. Detectizr,

FTscroller

Page 87: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB LAYER

jQuery

can.JS(MVC)

Modernizr (AMD)

CBC libscomtower

Other libse.g. Detectizr,

FTscroller

Data URIs SASS

Page 88: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

conditional����������� ������������������  styling

conditionallibrary����������� ������������������  loading

concatenation����������� ������������������  and����������� ������������������  minification

concatenation����������� ������������������  and����������� ������������������  minification

AMD AND MORE

Page 89: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

data����������� ������������������  uri����������� ������������������  encoded

data����������� ������������������  uri����������� ������������������  encoded

DATA URI IMAGES

Page 90: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Native Layer (Java, Objective C, ...)

Hybrid Layer (communication between native and web)

Web (Frontend) Layer (HTML5, CSS, JS, MVC frameworks, custom libraries)

Backend LayerServer, CDN (ESI, SSI, Java, Apache, CGI, Perl, PHP)

Fo

cus

on

Pe

rfo

rma

nce

Fo

cus o

n P

erfo

rma

nce

Page 91: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• Communication protocol between native to web (bi-directional)

• Inspired by communication + CN Tower = ComTower

• JavaScript sending messages to native app inside iFrame as “the window to the app”

• App executing JavaScript functions inside the webpage

COMTOWER

Page 92: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Startup:HTTP Header set via native

$(HTTP_CBC_COMTOWER) =TRUE

comtower call

JavaScript callback

1

e.g. native sharing

e.g. app version

Web<iframe/>

2

NativeComTowerDelegate

2

Page 93: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Native Layer (Java, Objective C, ...)

Hybrid Layer (communication between native and web)

Web (Frontend) Layer (HTML5, CSS, JS, MVC frameworks, custom libraries)

Backend LayerServer, CDN (ESI, SSI, Java, Apache, CGI, Perl, PHP)

Fo

cus

on

Pe

rfo

rma

nce

Fo

cus o

n P

erfo

rma

nce

Page 94: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WebViewhttp://anyURL

WEBVIEW

Page 95: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

HOW DO WE BUILD?

Page 96: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

BUILD WEB APPImplementation of framework

Common elements (CSS, JS)

Platform specific CSS and JS

Framework

App specific widgets (not shared with other apps)

App specific styles

App

concatenated, minified, compiled

Maven build + SVN externalspulling in files from both modules

Page 97: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

FOCUS ON PERFORMANCE OPTIMIZATION DURING BUILD

Page 98: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Maven Plugins

AUTOMATED BUILT-IN PERFORMANCE OPTIMIZATION

• Closure Compiler (Google)

• Minify-maven-plugin

• HTMLCompressor for html

• Integrated performance checks

• Confess based on Phantom JS

• compass for data URI

Page 99: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Compiled to point to hybrid URL

BUILD NATIVE APP

Page 100: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

NEWS APPRATIO IOS

Page 101: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Navigation (Menu and horizontal sub navigation)

Pull to Refresh

Push Notifications

Sharing Tools

Send your News

70:30

Offline

Favorites

More...

WEB NATIVE Lineups

Stories

Photo Galleries

Video & Audio

Breaking News Ticker

Business Ticker

Weather

Tracking

Ads

IOS

??? ???

Page 102: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

NEWS APPRATIO ANDROID

Page 103: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

100:0App launcher

WEB NATIVE Lineups

Stories

Photo Galleries

Video & Audio

Breaking News Ticker

Business Ticker

Weather

Tracking

Ads

ANDROID

More...

Page 104: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB

Weather

Ads

Lineups

Galleries

COMMON AND NEWS SPECIFIC ELEMENTS

Page 105: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEB AND NATIVE

Web����������� ������������������  fed����������� ������������������  by����������� ������������������  

menu����������� ������������������  JSON

Native����������� ������������������  fed����������� ������������������  by����������� ������������������  

same����������� ������������������  menu����������� ������������������  JSON

NAVIGATION

Page 106: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

CHALLENGES

Page 107: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• New technologies

• Ever changing requirements and priority shifts

• New CMS (re-thinking content) and 3rd party strategy

• 3rd party content supported but NOT optimized

• Balance between supporting and optimizing different browsers (Android fragmentation)

• Testing

CHALLENGES

Page 108: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

• New technologies

• Ever changing requirements and priority shifts

• New CMS (re-thinking content) and 3rd party strategy

• 3rd party content supported but NOT optimized

• Balance between supporting and optimizing different browsers (Android fragmentation)

• Testing

CHALLENGES

It’s����������� ������������������  hard!

Page 109: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

IOS WRAPPER APP Things to watch out for

Page 110: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEBKIT CSSbody {

-webkit-touch-callout: none;

-webkit-tap-highlight-color: rgba(0,0,0,0);}

?

Page 111: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

WEBKIT CSSbody { /* Disables the default callout shown when you touch and hold a touch target */ -webkit-touch-callout: none;

/* Overrides the highlight color shown when the user taps a link */ -webkit-tap-highlight-color: rgba(0,0,0,0);}

Page 112: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

COMTOWER DROPPING CALLS

QUEUE

Page 113: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

JAVASCRIPT ENGINE INSIDE IOS WEBVIEW IS SLOWER

THAN DEFAULT SAFARI

BUMMER!

Page 114: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

0

1000

2000

3000

4000

5000

6000

7000

8000

IE9/Win 7

Chrome24/Win 7

Firefox 18/Win 7

Opera11.61/Win 7

Safari/iOS 5/iPad 3

Safari/iOS 6/iPhone 4S

Chrome 24/Android 4.2.1/Nexus 4

Silk/KindleFire

IE 8/Win 7

WebView/iOS 6/iPhone 4s

WebView/iOS 5/iPad 3

tim

e (m

s) Bad

Good

JAVASCRIPT PERFORMANCE ON VARIOUS PLATFORMS

Page 115: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

Page 116: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

• Performance is especially important for battery-driven, smaller CPU devices (= Mobile)

Page 117: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

• Performance is especially important for battery-driven, smaller CPU devices (= Mobile)

• Each HTTP request costs around 200ms

Page 118: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

• Performance is especially important for battery-driven, smaller CPU devices (= Mobile)

• Each HTTP request costs around 200ms

• Automate performance optimization

Page 119: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

• Performance is especially important for battery-driven, smaller CPU devices (= Mobile)

• Each HTTP request costs around 200ms

• Automate performance optimization

• Use AMD for conditional loading based on features and devices

Page 120: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

TAKE AWAYS TO REMEMBER

• Performance is especially important for battery-driven, smaller CPU devices (= Mobile)

• Each HTTP request costs around 200ms

• Automate performance optimization

• Use AMD for conditional loading based on features and devices

• Native components as progressive enhancement strategy

Page 121: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

AND WHAT COMES AFTER MACROCOSM?

Page 122: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

Beer

Page 123: WebExpo Talk: EMBRACING PERFORMANCE IN TODAY’S MULTI-PLATFORM MACROCOSM

#webexpo

THANK YOUQUESTIONS?http://bit.ly/perf-macrocosm

More����������� ������������������  info����������� ������������������  under����������� ������������������  follow-up����������� ������������������  blog����������� ������������������  post����������� ������������������  (including����������� ������������������  slides)