Upload
maximiliano-firtman
View
1.049
Download
0
Tags:
Embed Size (px)
Citation preview
extreme web performance for mobile devices
maximiliano @firtman firt.mobi
San Francisco, April, 20th 2015
performance + mobile + web
1- Mobile Web today 2- Performance & Mobile 3- Tools 4- Initial loading & perception 5- Responsiveness & experience
Adobe Digital Index NetMarketShare Akamai.io Wikimedia Stats StatCounter MOVR by WURFL
web platformsLinks at firtman,github.io/fluent
web platforms
Samsung10%
Android14%
Others4%
Windows Phone 3%
Opera 5%InApp iOS
5%
Safari iOS79%
Safari iOS836%
Chrome15%
Others?
• Firefox • UC Browser • Nokia Browser • BlackBerry Browser
1- mobile web today
- Understand the real ecosystem - Android browsers - Don’t think you are an average user - Everything will change
immediate feedback <100ms
keeping user’s flow of thoughts <1s
perception
Jakob Nielsen - Usability Engineering
responsive web design
Source: guypo.com/rwd2014
43% more requests
compared with a mobile site
responsive web design
Source: guypo.com/rwd2014
129% more data transfer
compared with a mobile site
responsive web design
Source: guypo.com/rwd2014
87% more CPU time
compared with a mobile site
2- mobile and performance- Perception: 1s threshold - RTT latency - Test on low hardware and 2G/3G - RWD harms performance
emulators
Samsung10%
Android15%
Others4%
Windows Phone 3%
Opera 5%
InApp Browser iOS 5%
Safari iOS45%
Chrome14%
emulators
Samsung10%
Android15%
Others4%
Windows Phone3%
Opera 5%
InApp Browser iOS 5%
Safari iOS45%
Chrome14%
emulators
Samsung10%
Android15%
Others4%
Windows Phone 3%
Opera 5%
InApp Browser iOS 5%
Safari iOS45%
Chrome14%
remote inspectors
Samsung10%
Android14%
Others4%
Windows Phone3%
Opera 5%
InApp Browser iOS 5%
Safari iOS45%
Chrome15%
Connection simulators
• Network link conditioner (Mac/iOS) • Charles Proxy • Clumsy for Windows • Net Limiter for Windows • SlowyApp for Mac • Chrome Developer Tools
tools
navigation timing api
Samsung12%
Android*12%
Others4%
Windows Phone3%
Opera 5%
InApp Browser iOS5%
Safari iOS45%
Chrome15%
* Android browser only from 4.0
Network information API
• Android Browser, Silk (spec #1) type • BlackBerry 10, old Firefox (spec #2) bandwidth • Firefox, Chrome for Android 38+ (spec #3) type
html5 apis
4- initial loading & perception- 1 second threshold - classic checklist - ATF and the rest - responsive web design - future visits
1. Facebook’s l.php 2. bit.ly 3. aa.com 4. www.aa.com 5. www.aa.com/HomePage 6. mobile.aa.com 7. mobile.aa.com/HomePage
The 14K limit
• TCP slow start • Initial congestion window: ~14.6Kb • > 14Kb will create another roundtrip
RTT
Avoid JavaScript frameworks
• Embrace Vanilla JS • If you really need them, load them after ATF • Think on alternatives or partial frameworks
ATF
Careful with Data URI in CSS
• Images are non-blocking by default • Using Data URI in CSS creates blocking images • Use them only on non-ATF external CSS
ATF
Client side rendering
• Careful with client-side frameworks • Try to render the initial view server-side • Render at least a basic view
ATF
Client side rendering
• Careful with client-side frameworks • Try to render the initial view server-side • Render at least a basic view
ATF
5x
Web Fonts• Blocks text rendering • Fonts are bigger than 14Kb • Remove characters • Simplify glyphs • Don’t use it on ATF
ATF
Responsive Web Design
• Media queries block rendering (all of them) • ATF content on mobile is unique
Responsive Web Design
• Using same URL for mobile/desktop still a good a idea • Mix it with RESS / adaptive web design • Load media queries CSS async • Use server-side libraries to decide to send ATF only • WURFL or DeviceAtlas
After ATF is ready
• Load rest of your content • Gain experience while rendering ATF: current performance, screen density, bandwidth • Make decisions: HD/SD
Defer non-ATF CSS
• No defer or async attributes (yet) • Inject <link> after rendering • load, requestAnimationFrame
Speed future visits
• Be cache friendly • Use Application Cache for ATF content • Create a custom cache
4- initial loading & perception
- ATF in 1s (illusion) - No redirects, GZip, no scripts - Only ATF CSS, careful with fonts - Defer anything else
4- responsiveness & experience- experience - consistent frame rate - immediate feedback - scrolling - your new enemy
Keep framerate high and consistent
• Keep framerate high and consistent • Avoid DOM manipulations in loops/scroll • Careful promoting GPU layers
consistent fps
Immediate feedback
• The 300ms delay
• mobile viewport (“user-scalable=no” on some browsers) • FastClick solution
Immediate feedback
• Mobile Viewport on Chrome
<meta name=viewport content="width=device-width">
HTML
Immediate feedback
• Mobile Fixed Viewport on IE <meta name=viewport content="width=device-width, user-scalable=no" >
HTML
Immediate feedback
• CSS on IE html { -ms-touch-action: manipulation; touch-action: manipulation; }
CSS
Storage for immediate feedback
• web storage vs web sql vs indexeddb • think about async vs sync • Finally IndexedDB on iOS 8!
Careful with some design features
• GPU vs CPU repaint • Important on scroll, transitions & animations
Careful with some design features
• Transforms: translate, scale, rotate and opacity GPU • border-radius, gradients, shadows, filters CPU repaint
5- responsiveness & experience- 100s feedback - Consistent fps - Avoid CPU repaints - Embrace GPU smartly - Profile & test
Picture from Simon Howden freedigitalphotos.net!
Picture from Simon Howden freedigitalphotos.net!
uf! we've covered a lot!
1- Mobile Web today 2- Mobile Performance 3- Tools 4- Initial load & perception 5- Responsiveness & experience
final thoughts
- measure and profile on the real world - don’t redirect, reduce requests - atf content in 1s, defer the rest - be simple, be aggressive
you can reach a good experience
Pictures)from)freedigitalphotos.net)
[email protected]@firt
firt.mobi/pmw firt.mobi/mh5
Book signing: Tue 18.00
Office Hours: Tue 14.15
50% OFF!