Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

32
Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen

Transcript of Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Page 1: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Adapting web pages for mobile devicesFredrik Andersson Hannes Nevalainen

Page 2: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Background• Mobile is important

Source: eTForecasts

2003 2006 2009 2010 20150

500

1000

1500

2000

Millions of internet users

DesktopMobile

Page 3: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Problem description• Priorities• No extra development• Fully featured• Appearance

Page 4: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Limits

2000 2007 2016 ?2012

The screens are growing…

Page 5: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.
Page 6: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Project Constraints

• Static web server• Strictly client side

• JSON API• Rich user

interface

Page 7: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

VisualChange

Page 8: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

VisualChange::CSS• Responsive web

design• 66 out of 1162 CSS

properties changed• Reusable interface

components• easy to modify

Page 9: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

VisualChange::MediaQueries

Page 10: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

VisualChange::ViewPort• Default width 980 px• Can be changed in JavaScript• Non consistent behavior between devices• ”Smart” zoom

Page 11: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

VisualChange::Zoom

Page 12: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

PERFORMANCE

Page 13: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

JavaScript::Performance

Chrom

e 17

Fire

fox

10 IE9

Opera

11.

61

iPho

ne (S

afar

i)

N9 (S

afar

i)

N9 (O

pera

Min

i)0

1000200030004000500060007000

Sunspider 0.9.1 (ms)

Page 14: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

JavaScript::Performance

Chrom

e 17

Fire

fox

10 IE9

Opera

11.

61

iPho

ne (S

afar

i)

N9 (S

afar

i)

N9 (O

pera

Min

i)0

2000

4000

6000

8000

10000

12000

V8 Benchmark suite 7 (score)

Page 15: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Mobile is slow

Page 16: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

JavaScript::Performance• JavaScript on mobile devices is slow• Avoid excessive DOM manipulation• No animations

• requestAnimationFrame• Not available yet…

• GPU rendering• Tricky and error prone

Page 17: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Common

JavaScript::InitializationDifferent devices with different features

Mobile Desktop

Page 18: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

NETWORK

Page 19: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network• Latency > 100 ms on 3G

networks• Concurrent request limits• 6 on desktops• 1-6 on smart phones

• Optimize payload and number of requests

Page 20: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Watch out for the waterfall

Page 21: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::Images

Sprites

• Combine several images into one

Data-URI

• Image data inlined

<img src=”data:image/png;base64,<encoded data>” />

VS

• Base64 encoded

Page 22: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::JavaScript• Bundle• combine libraries to one file

• Modernizr, RequireJS, jQuery, Underscore, Backbone, jQuery UI, jQuery.jScrollPane, jQuery.MouseWheel, jQuery.MouseWheel Intent, jQuery.TinyPubSub, jQuery.Color, jQuery.Spin,…

• Inline modules• Dependencies between modules => hard to bundle• Views have many dependencies == many requests• Long dependency chains are expensive

Page 23: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::InlineModules

Page 24: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::Minimization• Minimization• UglifyJS, Google Closure, YUI Compressor

• gzip

Page 25: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network:: Minimization

Libraries Models0

100

200

300

400

500

600

700

800

Effects of minimization (kB)

MinimizedOriginal

Page 26: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Missing ; before statement on line 1

No minimization while developing!

Page 27: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::CacheManifest• List of files• Fetch and cache all files in list• JavaScript hooks

CACHE MANIFEST # 2010-06-18:v2

# Files to cacheCACHE:index.html stylesheet.css images/logo.png scripts/main.js

# Online resourcesNETWORK:login.php /myapi

Page 28: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::Charts

1 2 3 4 5 6

100

200

300

400

Accumulated transfer size (kB)

OriginalOptimizedAppCached

Pages visited

transferred content is gzipped

Total size (339kB)

Page 29: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

Network::Charts

1 2 3 4 5 60

20

40

60

80

100

120

140

Accumulated number of requests

OriginalOptimizedAppCached

Pages visited

Page 30: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

BuildProcess• Automate into build process• Do after each change• make dev

Page 31: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.

BrowserSupport

Tested browsers

• Chrome 17• Firefox 10• IE9• Mobile Safari

(Android, iOS, Meego)

• IE9 No Cache manifest

Page 32: Adapting web pages for mobile devices Fredrik Andersson Hannes Nevalainen.