In her presentation at Breaking Development in San Diego CA Barbara Bermes shared how the Canadian Broadcasting Corporation approaches performance in the multi-platform world. Here's my notes from her talk on Embracing Performance in Today's Multi-Platform Macrocosm.
- If something feels slow it is unpleasant, boring. If it is fast, you feel you are making progress and being successful.
- Our current Internet is a macrocosm of different platforms, browsers, ISPs, cellular providers, devices, and more.
- We are multi-screeners in a multi-platform macrocosm. How do we manage performance in this reality?
- Comparing HTML5 performance to native app performance is like comparing a tailored suit to a store bought one. We need to make each experience as fast possible wherever it is accessed instead of comparing the two.
- Mobile devices have latency and connectivity issues, data usage plans, battery drain, and small CPU/GPUs. Performance matters more under these circumstances.
- Reduce http requests: each one costs around 200ms. Avoid latency issues as much as possible. Only load what is needed.
- To reduce requests: concatenate and minify assets, make use of data URIs for images, use asynchronous module definitions, use single app pages to reduce page downloads.
- Use conditional loading to add different stylesheets to Android vs. iOS stylesheets for web pages within a native WebView.
- A hybrid layer can act as a communication layer between native & Web components by sending Javascript to a native Web wrapper.
- Think of native components as progressive enhancement.
- Focus on performance optimization during the build step. There's lots of build tools that can to automate performance optimization.
- the Canadian Broadcast app uses 70% Web code and 30% native code in their hybrid app implementation for iOS.
- The Javascript performance inside of Web UIviews is much slower than in the native Web browser.
- New technologies are always coming out and can impact your process.
- Old CMS systems, and ad tracking systems can cause issues.
- 3rd party content needs to not only be supported but optimized as well.